Да, добавлено в версии 2.5. Синтаксис выражения:
a if condition else b
Сначала condition
оценивается, затем точно один из a
или b
оценивается и возвращается на основе логического значения condition
. Если condition
оценивается как True
, тогда a
оценивается и возвращается, но b
игнорируется, или же когда b
оценивается и возвращается, но a
игнорируется.
Это допускает короткое замыкание, потому что когда condition
истинно, только a
оценивается, а b
вообще не оценивается, но когда condition
ложно, только b
оценивается и a
не оценивается вообще.
Например:
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
Обратите внимание, что условные выражения - это выражение , а не выражение . Это означает, что вы не можете использовать операторы присваивания или pass
или другие операторы в условном выражении :
>>> pass if False else x = 3
File "<stdin>", line 1
pass if False else x = 3
^
SyntaxError: invalid syntax
Однако вы можете использовать условные выражения для присвоения переменной следующим образом:
x = a if True else b
Думайте об условном выражении как о переключении между двумя значениями. Это очень полезно, когда вы находитесь в ситуации «одного значения или другого», но больше ничего не делает.
Если вам нужно использовать операторы, вы должны использовать обычный if
оператор вместо условного выражения .
Имейте в виду, что некоторые Pythonistas не одобряют его по нескольким причинам:
- Порядок аргументов отличается от порядка классического троичного оператора
condition ? a : b
из многих других языков (таких как C, C ++, Go, Perl, Ruby, Java, Javascript и т. Д.), Что может привести к ошибкам когда люди, незнакомые с «удивительным» поведением Python, используют его (они могут изменить порядок аргументов).
- Некоторые считают его "громоздким", поскольку он идет вразрез с нормальным потоком мыслей (сначала думая о состоянии, а затем о последствиях).
- Стилистические причины. (Хотя «inline
if
» может быть действительно полезным и сделать ваш сценарий более кратким, это действительно усложнит ваш код)
Если у вас возникают проблемы с запоминанием порядка, помните, что когда вы читаете вслух, вы (почти) говорите, что имеете в виду. Например, x = 4 if b > 8 else 9
читается вслух как x will be 4 if b is greater than 8 otherwise 9
.
Официальная документация: