Python中的逻辑悖论?
我遇到了一种情况,"not None"同时等于True和False。
>>> not None
True
>>> not None == True
True
>>> not None == False
True
一开始我以为这是因为运算符的顺序问题,但当我测试了一个类似的表达式后:
>>> not False
True
>>> not False == False
False
>>> not False == True
True
有没有人能解释一下这是为什么呢?
4 个回答
2
这是扩展的顺序。Python 是这样读取它们的:
o>>> not (None == True)
True
>>> not (None == False)
True
>>> not False
True
>>> not (False == False)
False
>>> not (False == True)
True
>>>
我觉得这样说很清楚。
4
这确实是因为运算符的优先级问题。not None == False
这个表达式会被计算成 not (None == False)
。这里的 None == False
结果是 False
,这就解释了你的结果。
你可以试试这个:
>>> (not None) == True
True
>>> (not None) == False
False
21
这 是 由于运算符的优先级。not none == True
的意思是 not (None == True)
,也就是 None != True
,这个结果是对的。同样,None != False
也是对的。值 None
和布尔值(真和假)是不同的。
你最后的两个表达式分别是 False != False
,这个结果是错的;还有 False != True
,这个结果是对的。