如何在Python中将if/else压缩成一行?

< p > 可能的重复: < br > Python三元运算符 < br > 在一行上写一个简单的if-then语句 < / p >
是否有一种方法可以在Python中将if/else语句压缩到一行?
我经常看到各种各样的快捷方式,并怀疑它也可以适用于这里
510283 次浏览

仅供作为值使用:

x = 3 if a==2 else 0

return 3 if a==2 else 0

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

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

Python处理“三元”表达式的一个例子:

i = 5 if a > 7 else 0

转化为

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

在使用列表推导式时,或者有时在return语句中,这实际上很方便,否则我不确定它对创建可读的代码有多大帮助。

可读性问题在最近的SO问题比在python中使用if-else语句更好的方法中进行了详细的讨论。

它还包含各种其他聪明的(和一些混淆)方法来完成相同的任务。仅仅根据这些帖子就值得一读。

有条件表达式:

a if cond else b

但这是一个表达,不是一个陈述。

在if语句中,if(或elifelse)可以与块体写在同一行,如果该块只是像这样:

if something: somefunc()
else: otherfunc()

但出于格式风格的考虑,不鼓励这样做。