python三元运算符行为

时间:2012-08-12 12:48:14

标签: python ternary-operator

当我评估以下操作时

0 if True else 1 + 1 if False else 1

当我使用像

这样的括号进行编写时,它的计算结果为0
( 0 if True else 1 ) + ( 0 if False else 1 )

它正确评估为1,第一种情况发生了什么。

3 个答案:

答案 0 :(得分:11)

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))

答案 1 :(得分:3)

ternary 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

答案 2 :(得分:-1)

三元运算符看起来像“条件?值如果为真:值如果为假”,但似乎python不支持它,但我们可以使用if-else来替换.stype就像“条件if(b_1) )否则b_2,所以你可以依赖它匹配。如果b_1为真,则值为条件,如果b_2为真,则值为b_2。