为何(2>3 == False)结果为False而((2>3) == False)结果为True?
Python链式比较的运算逻辑
先看两段代码的执行结果:
第一段代码:
print(2>3 == False)
执行结果:
False
第二段代码:
print((2>3) == False)
执行结果:
True
你猜的完全正确,这就是Python的链式比较特性导致的差异。
Python中,比较运算符(>、<、==等)支持链式写法,形如a 运算符1 b 运算符2 c的表达式,会被Python解释器等价转换为(a 运算符1 b) and (b 运算符2 c),而不是按照“优先级相同从左到右”的常规逻辑去执行(a 运算符1 b) 运算符2 c。
回到你的例子:
2>3 == False等价于(2>3) and (3 == False)2>3的结果是False3 == False的结果也是False- 两个
False做逻辑与运算,最终返回False
- 而
(2>3) == False则是强制先计算括号内的2>3得到False,再判断False == False,结果自然是True
内容的提问来源于stack exchange,提问作者V. E.
相关产品推荐
相关产品推荐

