Python 0是0==0(#计算结果为真?)

Python 0是0==0(#计算结果为真?),python,python-3.x,Python,Python 3.x,这使我困惑。即使不知道优先顺序,也可以检查收集表达式的两种可能方法是否会给出False: >>> (0 is 0) == 0 False >>> 0 is (0 == 0) False 但是 为什么?您正在使用比较运算符链接。该表达式被解释为: (0 is 0) and (0 == 0) 从: 比较可以任意链接,例如,x

这使我困惑。即使不知道优先顺序,也可以检查收集表达式的两种可能方法是否会给出
False

>>> (0 is 0) == 0
False
>>> 0 is (0 == 0)
False
但是

为什么?

您正在使用比较运算符链接。该表达式被解释为:

(0 is 0) and (0 == 0)
从:


比较可以任意链接,例如,
xx?Yz
(其中
应该代表一些比较运算符)既不等于
(x?y)??z
x?(y??z)
,而是
x?y和y??z


这对于
和co特别有用,允许您编写
min
之类的东西,并让它做您想做的事情,而不是将布尔值与数字进行比较(这在大多数其他语言中都会发生)。

这必须是一个重复,但是
0是0==0
被解析为
(0是0)和(0==0)
,就像
a==b==c
被解析为
a==b和b==c
@PaulHankin一样,你应该把它作为一个asn来处理,看看这篇文章:
(0 is 0) and (0 == 0)