Zanurkuj w Pythonie/Operatory and i or: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Piotr (dyskusja | edycje)
mNie podano opisu zmian
Robwolfe (dyskusja | edycje)
Nie podano opisu zmian
Linia 13:
'c'
 
# Podczas używania <tt>and</tt>, wartości są oceniane od lewej do prawej w kontekście logicznym. <tt>0</tt>, <tt><nowiki>''</nowiki></tt>, <tt>[]</tt>, <tt>()</tt>, <tt>{}</tt> i <tt>None</tt> są fałszem kontekście logicznym, natomiast wszystko inne jest prawdą. Cóż, prawie wszystko. Domyślnie instancje klasy w kontekście logicznym są prawdą, ale możesz zdefiniować specjalne metody w swojej klasie, któraktóre sprawisprawią, że będzie ona fałszem w kontekście logicznym. Wszystkiego o klasach i specjalnych metodach nauczysz się w rozdziale [[../Obiekty i klasy|Obiekty i klasy]]. Jeśli wszystkie wartości są prawdą w kontekście logicznym, <tt>and</tt> zwraca ostatnią wartość. W tym przypadku and wylicza <tt>'a'</tt>, co jest prawdą, potem <tt>'b'</tt>, co jest prawdą i zwraca <tt>'b'</tt>.
# Jeśli jakaś wartość jest fałszywa w kontekście logicznym, <tt>and</tt> zwraca pierwszą fałszywą wartość. W tym wypadku <tt><nowiki>''</nowiki></tt> jest pierwszą fałszywą wartością.
# Wszystkie wartości są prawdą, tak więc <tt>and</tt> zwraca ostatnią wartość, <tt>'c'</tt>.
Linia 61:
'second'
 
# Jako że <tt>a</tt> jest pustym napisem, który Python uważa jakoza fałsz w kontekście logicznym, <tt>1 and <nowiki>''</nowiki></tt> daje <tt><nowiki>''</nowiki></tt>, następnie <tt><nowiki>''</nowiki> or 'second'</tt> daje <tt>'second'</tt>. Ups! To nie to, czego chcieliśmy.
 
Sztuczka <tt>and</tt>-<tt>or</tt>, czyli wyrażenie <tt>bool and a or b</tt>, nie będzie działało jak wyrażenie C <tt class="lang-c">bool ? a : b</tt>, gdy <tt>a</tt> jest fałszem w kontekście logicznym.