Python中表达式0 < 0 == 0与加括号写法结果不同,是否为Bug?
Python中带括号与不带括号的比较表达式结果差异是否为Bug?
先看你给出的代码运行结果:
>>> 0 < 0 == 0 False >>> (0 < 0) == 0 True >>> 0 < (0 == 0) True
这不是Bug,是Python的链式比较特性导致的,具体解释如下:
- 无括号的
0 < 0 == 0会被Python按链式比较规则解析为0 < 0 and 0 == 0:先判断0 < 0得到False,再判断0 == 0得到True,最终False and True结果为False。链式比较的设计是为了让表达式更贴近自然语言逻辑,同时中间的操作数只会被计算一次。 - 带括号的
(0 < 0) == 0会优先计算括号内的0 < 0得到False,Python中布尔值是整数的子类,False等价于0,因此False == 0的结果为True。 - 带括号的
0 < (0 == 0)优先计算括号内的0 == 0得到True,True等价于1,因此0 < 1的结果为True。
内容的提问来源于stack exchange,提问作者MrJ
相关产品推荐
相关产品推荐

