可能重复:
Python Ternary Operator
Putting a simple if-then statement on one line
有没有办法将if
/ else
语句压缩到Python中的一行?
我经常看到各种各样的捷径,并怀疑它也适用于此。
答案 0 :(得分:131)
Python执行“三元”表达式的一种方式:
i = 5 if a > 7 else 0
转换为
if a > 7:
i = 5
else:
i = 0
这在使用列表推导时有用,或者有时在返回语句中使用,否则我不确定它在创建可读代码方面有多大帮助。
在最近的SO问题better way than using if-else statement in python中详细讨论了可读性问题。
它还包含各种其他聪明(以及有些模糊)方法来完成相同的任务。根据这些帖子,值得阅读。
答案 1 :(得分:51)
Python的if
可以用作ternary operator:
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
答案 2 :(得分:20)
仅用作值:
x = 3 if a==2 else 0
或
return 3 if a==2 else 0
答案 3 :(得分:13)
有条件表达式:
a if cond else b
但这是一个表达,而不是陈述。
在if语句中,if
(或elif
或else
)可以写在与块体相同的行上,如果块只是一个像:
if something: somefunc()
else: otherfunc()
但不鼓励这样做格式化。