Python конденсируется, если /else в одну строку?
Возможный дубликат:
Терминальный оператор Python
Включение простой инструкции if-then в одну строку
Есть ли способ сжать оператор if/else в одну строку в Python? Я часто вижу всевозможные ярлыки и подозреваю, что он может применяться и здесь.
Ответы
Ответ 1
Пример метода Python для выполнения "тройных" выражений:
i = 5 if a > 7 else 0
означает
if a > 7:
i = 5
else:
i = 0
Это действительно полезно при использовании списков или иногда в операторах return, иначе я не уверен, что это помогает в создании читаемого кода.
Вопрос о читаемости был подробно рассмотрен в этом недавнем вопросе SO лучше, чем использование инструкции if-else в python.
Он также содержит различные другие умные (и несколько запутанные) способы выполнения одной и той же задачи. Это стоит прочитать только на основе этих сообщений.
Ответ 2
Python if
может использоваться как тернарный оператор:
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
Ответ 3
Только для использования в качестве значения:
x = 3 if a==2 else 0
или
return 3 if a==2 else 0
Ответ 4
Существует условное выражение:
a if cond else b
но это выражение, а не утверждение.
В выражениях if, if
(или elif
или else
) могут быть записаны в той же строке, что и тело блока, если блок является одним из следующих:
if something: somefunc()
else: otherfunc()
но это обескураживается как вопрос форматирования.