以下两个表达式使用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