如果 Python 没有三元条件运算符,是否可以使用其他语言结构模拟一个?
是的,它是在 2.5 版本中添加的 。
语法是:
a if condition else b
评估第一个condition
,然后根据condition
的布尔值返回a
或b
如果condition
计算结果为True a
则返回,否则返回b
。
例如:
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
请注意,条件是表达式 ,而不是语句 。这意味着您不能在条件中使用赋值或pass
或其他语句:
>>> pass if False else x = 3
File "<stdin>", line 1
pass if False else x = 3
^
SyntaxError: invalid syntax
在这种情况下,您必须使用普通的if
语句而不是条件语句。
请记住,由于以下几个原因,一些 Pythonist 对此不满意:
如果您在记住订单时遇到问题,请记住,如果您大声朗读它,您(几乎)会说出您的意思。例如, x = 4 if b > 8 else 9
, x = 4 if b > 8 else 9
大声朗读x = 4 if b > 8 else 9
因为x will be 4 if b is greater than 8 otherwise 9
。
官方文件:
对于 2.5 之前的版本,有诀窍:
[expression] and [on_true] or [on_false]
当on_true
具有 false 布尔值时,它可能会给出错误的结果。 1
虽然它确实有从左到右评估表达式的好处,但在我看来这更清晰。