Python压缩if / else到一行?

可能重复:
Python三元运算符
把一个简单的if-then语句放在一行上

有没有办法在Python中将if / else语句压缩到一行? 我经常看到各种各样的捷径,并且怀疑它也适用于这里。

Python做“三元”expression式的一个例子:

i = 5 if a > 7 else 0 

翻译成

 if a > 7: i = 5 else: i = 0 

当使用列表parsing,或者有时在返回语句中,这实际上派上用场了,否则我不确定它在创build可读代码方面有多大的帮助。

可读性问题在这个最近的SO问题中比在Python中使用if-else语句更好地讨论了。

它还包含其他各种巧妙 (有些混淆 )的方式来完成相同的任务。 这是值得阅读只是基于这些职位。

Python的if可以用作三元运算符 :

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

仅用作值:

 x = 3 if a==2 else 0 

要么

 return 3 if a==2 else 0 

有条件expression式:

 a if cond else b 

但这是一个expression,而不是一个声明。

在if语句中, if (或者elif或者else )可以和块体一样写在同一行上,如果块只是一个像:

 if something: somefunc() else: otherfunc() 

但这是一个格式化的风格,这是不鼓励的。