Zanurkuj w Pythonie/Operatory and i or: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Nie podano opisu zmian |
mNie podano opisu zmian |
||
Linia 1:
{{Podświetl|py}}
== Operatory <tt>and</tt> i <tt>or</tt> ==
'''Przykład 4.15. Poznajemy <tt>and</tt>'''
>>> 'a' and 'b' #(1)
Linia 12 ⟶ 13:
'c'
# Podczas używania <tt>and</tt>, wartości są
# 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>.
'''Przykład 4.16. Poznajemy <tt>or</tt>'''
>>> 'a' or 'b' #(1)
Linia 30 ⟶ 31:
'a'
# Używając <tt>or</tt>, wartości są wyliczane w kontekście logicznym od lewej do prawej, tak jak <tt>and</tt>. Jeśli jakaś wartość jest prawdą, or zwraca tą wartość natychmiast. W tym wypadku, <tt>'a'</tt> jest pierwszą wartością prawdziwą.
# <tt>or</tt> wylicza <tt><nowiki>''</nowiki></tt> jako fałsz, potem <tt>'b'</tt>, jako prawda, i zwraca <tt>'b'</tt>.
# Jeśli wszystkie wartości są fałszem, <tt>or</tt> zwraca ostatnią wartość. <tt>or</tt>
# Zauważ, że <tt>or</tt>
Jeśli jesteś
==== Używanie sztuczki <tt>and</tt>-<tt>or</tt> ====
'''Przykład 4.17. Poznajemy sztuczkę and-or'''
Linia 48 ⟶ 49:
'second'
# Ta składnia wygląda podobnie do wyrażenia <tt class="lang-c">bool ? a : b</tt> w C. Całe wyrażenie jest
# <tt>0 and 'first'</tt> daje
Jakkolwiek
'''Przykład 4.18. Kiedy zawodzi sztuczka <tt>and</tt>-<tt>or</tt>'''▼
▲'''Przykład 4.18. Kiedy zawodzi sztuczka and-or'''
>>> a = ""
Linia 61:
'second'
# Jako że <tt>a</tt> jest pustym napisem, który Python uważa jako 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>.
Sztuczka <tt>and</tt>-<tt>or</tt>, czyli wyrażenie <tt>bool and a or b</tt>, nie będzie
Prawdziwą sztuczką kryjącą się za sztuczką <tt>and</tt>-<tt>or</tt>, jest upewnienie się, że wartość <tt>a</tt> nigdy nie jest fałszywa. Jednym ze sposobów na wykonanie tego to przekształcenie <tt>a</tt> w <tt>[a]</tt> i <tt>b</tt> w <tt>[b]</tt>, potem pobranie pierwszego elementu ze zwróconej listy, którym będzie <tt>a</tt> lub <tt>b</tt>.
'''Przykład 4.19. Bezpieczne użycie sztuczki <tt>and</tt>-<tt>or</tt>
>>> a = ""
>>> b = "second"
Linia 73:
''
# Jako że <tt>[a]</tt> jest nie pustą listą, nigdy nie daje fałszu. Nawet gdy <tt>a</tt> jest równe <tt>0</tt> lub <tt><nowiki>''</nowiki></tt> lub inną wartością dającą fałsz, lista <tt>[a]</tt> jest prawdą ponieważ ma jeden element.
Jak dotąd, ta sztuczka może wydawać się bardziej uciążliwa niż pomocna. Możesz przecież osiągnąć to samo zachowanie instrukcją <tt>if</tt>, więc po co to całe zamieszanie. Cóż, w wielu przypadkach, wybierasz pomiędzy dwoma stałymi wartościami, więc możesz użyć prostszego zapisu i się nie martwić, ponieważ wiesz, że wartość zawsze będzie prawdą. I nawet kiedy potrzebujesz użyć bardziej skomplikowanej, bezpiecznej formy, istnieją powody aby tak robić. Na przykład, są pewne przypadki w Pythonie gdzie instrukcje <tt>if</tt> nie są dozwolone, tak jak w funkcjach lambda.
<noinclude>
|