当我评估以下操作时
0 if True else 1 + 1 if False else 1
它评估为 0 但是当我用括号写时
( 0 if True else 1 ) + ( 0 if False else 1 )
它正确评估为 1 ,在第一种情况下发生了什么。
当我评估以下操作时
0 if True else 1 + 1 if False else 1
它评估为 0 但是当我用括号写时
( 0 if True else 1 ) + ( 0 if False else 1 )
它正确评估为 1 ,在第一种情况下发生了什么。
0 if True else 1 + 1 if False else 1
实际上是:
(0) if (True) else ((1 + 1) if (False) else (1))
这肯定与您想要的不同:
((0) if (True) else (1)) + ((1) if (False) else (1))
asternary operator
是从条件运算符中读取的left to right
,+
其优先级低于条件运算符。所以,这两个是等价的:
>>> 0 if True else 1 + 1 if False else 1
0
>>> 0 if True else ( (1 + 1) if False else 1)
0
三元运算符看起来像“condition ? value if true : value if false”,但python似乎不支持,但我们可以使用if-else来替换。stype类似于“condition if (b_1) else b_2 ,所以你可以依赖它来匹配。如果 b_1 为真,则值为条件,如果 b_2 为真,则值为 b_2。