天天看点

转载:为什么Python中“2==2>1”结果为True

在Python中,你可能会发现这样一个奇怪的现象:

>>> 2 == 2 > 1
True
>>> (2 == 2) > 1
False
>>> 2 == (2 > 1)
False      

为什么会出现

2==2>1

的结果为True?如果说这是运算符的优先级问题,那么后两个式子为什么又都是False?

实际上这涉及到了Python的

链式对比(ChainedComparisons)

。在其他语言中,有一个变量

x

,如果要判断x是否大于1,小于5,可能需要这样写代码:

if (x > 1 and x < 5)      

但是在Python中,可以这样写代码:

if 1 < x < 5      

Python能够正确处理这个链式对比的逻辑。回到最开始的问题上,

==

等于符号和

<

小于符号,本质没有什么区别。所以实际上

2==2>1

也是一个链式对比的式子,它相当于

2==2and2>1

。此时,这个式子就等价于

True and True

。所以返回的结果为True。

关于链式对比,可以看官方文档:https://docs.python.org/3/reference/expressions.html#comparisons