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