';是'/';不是';python中的行为

';是'/';不是';python中的行为,python,Python,为什么这些不产生相同的结果: None is not None is False >>False (None is not None) is False >>True 我希望python像解释第二行一样解释第一行。为什么不呢 使用Python3.7.如果查看,可以看到'not'运算符的执行时间晚于'is'运算符 编辑:这是错误的@khelwood是正确的:这是由于表达式链接(相同的页面,不同的部分)所以原因是python中的所有比较运算符都是链接的。 感谢@khelw

为什么这些不产生相同的结果:

None is not None is False
>>False

(None is not None) is False
>>True
我希望python像解释第二行一样解释第一行。为什么不呢

使用Python3.7.

如果查看,可以看到'not'运算符的执行时间晚于'is'运算符


编辑:这是错误的@khelwood是正确的:这是由于表达式链接(相同的页面,不同的部分)

所以原因是python中的所有比较运算符都是链接的。 感谢@khelwood和@paulm

None is not None is False

(None is not None) and (None is False)

因为在Python中。同样的原因,像
0
这样的表达式可以工作,它被解释为
(0
。您的第一行被解释为
(None不是None)和(None是False)
。除了数学运算符之外,我认为这是非常不直观的,潜在的成本远远超过了最小的收益。编写类似于
if a!=例如,在mylist中,b在任何有意义的方面都没有帮助。事实并非如此:
不是
具有相同的优先级table@sacuL你说得对,我读表的速度有点太快了,在我找到的第一个“不是”处停了下来