Czy Python ma trójwarstwowego operatora warunkowego?

Jeśli Python nie ma trójwarstwowego operatora warunkowego, czy można go symulować za pomocą innych konstrukcji językowych?

1 odpowiedź

Tak, został dodany w wersji 2.5. Składnia wyrażenia to:

a if condition else b

Pierwszy warunek jest oceniany, wtedy dokładnie jeden, a lub b, jest oceniany i zwracany na podstawie wartości logicznej warunku. Jeśli warunek ma wartość True, to a jest obliczane i zwracane, wtedy b jest ignorowane, lub gdy b jest oceniane i zwracane, wtedy a jest ignorowane.

Pozwala to na zwarcie, ponieważ gdy warunek jest prawdziwy, tylko a jest oceniane, a b nie jest w ogóle analizowane, ale gdy warunek jest fałszywy, tylko b jest oceniane i a nie jest w ogóle oceniane.

Na przykład:

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

Zauważ, że warunkowe są wyrażeniem, a nie instrukcją. Oznacza to, że nie można używać instrukcji przypisania lub przepustki lub innych instrukcji w wyrażeniu warunkowym:

>>> pass if False else x = 3
  File "<stdin>", line 1
    pass if False else x = 3
          ^
SyntaxError: invalid syntax

Możesz jednak użyć wyrażeń warunkowych, aby przypisać zmienną w ten sposób:

x = a if True else b

Pomyśl o wyrażeniu warunkowym jako o przełączaniu między dwiema wartościami. Jest to bardzo przydatne, gdy znajdujesz się w sytuacji „jednej wartości lub innej”, ale nie robi nic więcej.

Jeśli potrzebujesz użyć instrukcji, musisz użyć zwykłej instrukcji if zamiast warunkowego wyrażenia.

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.