为什么Python中“2 == 2 > 1”结果为True?
在Python中,你可能会发现这样一个奇怪的现象:
1 | 2 == 2 > 1 |
为什么会出现2 == 2 > 1
的结果为True
?如果说这是运算符的优先级问题,那么后两个式子为什么又都是False
?
实际上这涉及到了Python的链式对比(Chained Comparisons)
。在其他语言中,有一个变量x
,如果要判断x是否大于1,小于5,可能需要这样写代码:
1 | if (1 < x and x < 5) |
但是在Python中,可以这样写代码:
1 | if 1 < x < 5 |
Python能够正确处理这个链式对比的逻辑。
回到最开始的问题上,==
等于符号和<
小于符号,本质没有什么区别。所以实际上2==2>1
也是一个链式对比的式子,它相当于2==2 and 2>1
。此时,这个式子就等价于True and True
。所以返回的结果为True。
关于链式对比,可以看官方文档:https://docs.python.org/3/reference/expressions.html#comparisons