如果 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
虽然它确实有从左到右评估表达式的好处,但在我看来这更清晰。