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()

но это обескураживается как вопрос форматирования.