有没有办法将if
/else
语句压缩到 Python 中的一行?
我经常看到各种捷径,并怀疑它也可以在这里应用。
问问题
464403 次
4 回答
328
Python 执行“三元”表达式的示例:
i = 5 if a > 7 else 0
翻译成
if a > 7:
i = 5
else:
i = 0
在使用列表推导时,或者有时在返回语句中,这实际上会派上用场,否则我不确定它对创建可读代码有多大帮助。
在这个最近的 SO question 中,比在 python 中使用 if-else 语句更好的方式详细讨论了可读性问题。
它还包含完成相同任务的各种其他巧妙(并且有些模糊)的方法。仅基于这些帖子就值得一读。
于 2012-07-17T19:15:52.180 回答
68
Pythonif
可以用作三元运算符:
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
于 2012-07-17T19:15:16.787 回答
41
仅用作值:
x = 3 if a==2 else 0
或者
return 3 if a==2 else 0
于 2012-07-17T19:14:57.460 回答
28
有条件表达式:
a if cond else b
但这是一个表达,而不是一个陈述。
在 if 语句中,if
(orelif
或else
) 可以写在与块主体相同的行上,如果块是这样的:
if something: somefunc()
else: otherfunc()
但这不鼓励作为格式样式的问题。
于 2012-07-17T19:16:21.357 回答