当我评估以下操作时
0 if True else 1 + 1 if False else 1
当我使用像
这样的括号进行编写时,它的计算结果为0( 0 if True else 1 ) + ( 0 if False else 1 )
它正确评估为1,第一种情况发生了什么。
答案 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。