python三元运算符行为

python三元运算符行为,python,ternary-operator,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,即第一种情况下发生的情况 0 if True else 1 + 1 if False else 1 实际上是: (0) if (True) else ((1 + 1) if (False) else (1)) 这与您想要的完全不同: ((0) i

当我评估以下操作时

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))
实际上是:

(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
0
>>> 0 if True else ( (1 + 1) if False else 1)
0
因为三元运算符从左到右读取,+的优先级低于条件运算符。因此,这两者是等价的:

>>> 0 if True else 1 + 1 if False else 1
0
>>> 0 if True else ( (1 + 1) if False else 1)
0

三元运算符看起来像条件?value if true:value if false,但python似乎不支持它,但我们可以使用if else来替换。stype类似于condition if b_1或b_2,因此您可以依赖它来匹配。如果b_1为true,则值为condition,如果b_2为true,则值为b_2。

三元运算符类似于condition?value if true:value if false,但是python似乎不支持它,但是我们可以使用if-else来替换。stype类似于condition if b_1或b_2,因此您可以依赖它来匹配。如果b_1为true,则值为condition,如果b_2为true,值是b_2。

a if b else c是三元运算符的python实现。python的值if condition else alternative是三元运算符,因为您可以将其用作子表达式。我知道,但我认为您的解释更好,我只是想弄清楚结果背后的原因。a if b else c是三元运算符的python实现。python的值if condition else alternative是三元运算符,因为您可以将其用作子表达式。我知道,但我认为您的解释更好,我只想弄清楚结果背后的原因。