我如何在Python中压缩if/else语句到一行?


当前回答

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(或elif或else)可以与块体写在同一行,如果该块只是像这样:

if something: somefunc()
else: otherfunc()

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

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

i = 5 if a > 7 else 0

转化为

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

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

可读性问题在最近的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

or

return 3 if a==2 else 0