Zanurkuj w Pythonie/Operatory and i or: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
mNie podano opisu zmian |
mNie podano opisu zmian |
||
Linia 4:
{{Python/Przykład
|4.
|tekst=
>>> 'a' and 'b' #(1)
Linia 13:
{{samp|'c'}}
# Podczas używania <code>and</code>
# Jeśli jakaś wartość jest fałszywa w kontekście logicznym, <code>and</code> zwraca pierwszą fałszywą wartość. W tym wypadku <code><nowiki>''</nowiki></code> jest pierwszą fałszywą wartością.
# Wszystkie wartości są prawdą, tak więc <code>and</code> zwraca ostatnią wartość, <code>'c'</code>.
Linia 19:
{{Python/Przykład
|4.
|tekst=
>>> 'a' or 'b' #(1)
Linia 33:
{{samp|'a'}}
# Używając <code>or</code>
# <code>or</code> wyznacza <code><nowiki>''</nowiki></code> jako fałsz, ale potem <code>'b'</code>, jako prawdę i zwraca <code>'b'</code>.
# Jeśli wszystkie wartości są fałszem, <code>or</code> zwraca ostatnią wartość. <code>or</code> ocenia <code><nowiki>''</nowiki></code> jako fałsz, potem <code>[]</code> jako fałsz, potem <code>{}</code> jako fałsz i zwraca <code>{}</code>.
Linia 39:
}}
Jeśli jesteś osobą programującą w języku [[C]], na pewno znajome jest ci wyrażenie <code class="lang-c">bool ? a : b</code>, z którego otrzymamy <code class="lang-c">a</code>, jeśli <code class="lang-c">bool</code> jest prawdą, lub <code class="lang-c">b</code> w przeciwnym wypadku. Dzięki sposobowi działania operatorów <code>and</code> i <code>or</code> w Pythonie, możemy osiągnąć podobny efekt.
=== Sztuczka <code>and</code>-<code>or</code> ===
{{Python/Przykład
|4.
|tekst=
>>> a = "first"
Linia 60:
{{Python/Przykład
|4.
|tekst=
>>> a = ""
Linia 69:
}}
Sztuczka <code>and</code>-<code>or</code>, czyli wyrażenie <code>bool and a or b</code>, nie będzie działało w identyczny sposób, jak wyrażenie w C <code class="lang-c">bool ? a : b</code>, jeśli <code>a</code> będzie fałszem w kontekście logicznym.
Prawdziwą sztuczką kryjącą się za sztuczką <code>and</code>-<code>or</code>, jest upewnienie się, czy wartość <code>a</code> nigdy nie jest fałszywa. Jednym ze sposobów na wykonanie tego to przekształcenie <code>a</code> w <code>[a]</code> i <code>b</code> w <code>[b]</code>, a potem pobranie pierwszego elementu ze zwróconej listy, którym będzie <code>a</code> lub <code>b</code>.
{{Python/Przykład
|4.
|tekst=
>>> a = ""
Linia 84:
}}
Jak dotąd, ta sztuczka może wydawać się bardziej uciążliwa niż pomocna. Możesz przecież osiągnąć to samo zachowanie instrukcją <code>if</code>, 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 i tak
{{Infobox|1=W Pythonie 2.5 wprowadzono odpowiednik wyrażenia <code class="lang-c">bool ? a : b</code> z języka C; jest ono postaci: <code>a if bool else b</code>. Jeśli wartość <code>bool</code> będzie prawdziwa, to z wyrażenia zostanie zwrócona wartość <code>a</code>, a jeśli nie, to otrzymamy wartość <code>b</code>.
}}
=== Materiały dodatkowe ===
|