小编典典

“foo is None”和“foo == None”之间有什么区别吗?

all

有什么区别:

if foo is None: pass

if foo == None: pass

我在大多数 Python 代码(以及我自己编写的代码)中看到的约定是前者,但我最近遇到了使用后者的代码。None 是 NoneType
的一个实例(也是唯一的实例,IIRC),所以没关系,对吧?有没有可能的情况?


阅读 63

收藏
2022-06-10

共1个答案

小编典典

is``True如果比较相同的对象实例,总是返回

==最终由__eq__()方法决定

IE

>>> class Foo(object):
       def __eq__(self, other):
           return True

>>> f = Foo()
>>> f == None
True
>>> f is None
False
2022-06-10