python if else表达式的不同评估结果



以下两个表达式使用if…else…

我可以理解c2的结果。但我想知道为什么c1会返回不同的结果。

a = 10
c1 = 10 + a if a > 20 else -a
c2 = 10 + (a if a > 20 else -a)
print(c1, c2)

输出:

-10    0

这是一个运算符优先级问题,+的优先级高于if,因此

c1 = 10 + a if a > 20 else -a

被评估为

c1 = (10 + a) if a > 20 else -a
= 20 if 10 > 20 else -10
= -10       # because 10 <= 20

您的第二个声明被评估为书面

c2 = 10 + (a if a > 20 else -a)
= 10 + (10 if 10 > 20 else -10)
= 10 + -10       # because 10 <= 20
= 0

c1等效于(10 + a) if a > 20 else -a

相关内容

最新更新