Python是否有三元条件运算符?
如果Python没有三元条件运算符,是否有可能使用其他语言构造来模拟一个条件运算符?
是的,它是在2.5版本中添加的。
语法是:
a if condition else b
评估第一个condition
,然后根据condition
的布尔值返回a
或b
如果condition
计算结果为真a
则返回b
,否则返回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
语句而不是条件语句。
请记住,它是由一些Pythonistas皱起了几个原因:
如果您在记忆顺序时遇到问题,请记住,如果您大声读出它,您(几乎)会说出您的意思。 例如, 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
。
官方文件:
你可以索引到一个元组中:
(falseValue, trueValue)[test]
test
需要返回True或False。
始终将其实施为:
(falseValue, trueValue)[test == True]
或者您可以使用内置的bool()
来确保一个布尔值:
(falseValue, trueValue)[bool(<expression>)]
对于2.5之前的版本,有一个诀窍:
[expression] and [on_true] or [on_false]
当on_true
具有假布尔值时,它可能会给出错误的结果
虽然它确实有评估表达从左到右的好处,在我看来这更清楚。
1.是否有相当于C的“?:”三元运算符?
链接地址: http://www.djcxy.com/p/105.html上一篇: Does Python have a ternary conditional operator?
下一篇: How do I include a JavaScript file in another JavaScript file?