python if else 表达式的不同求值结果

Different evaluation results of python if else expression

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

我能理解 c2 结果。但我想知道为什么 c1 returns 不同的结果。

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

print(c1, c2)

输出:

-10    0

这是一个 operator precedence 问题,+ 的优先级高于 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