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

发布于 2021-01-29 15:14:47

之间有什么区别:

if foo is None: pass

if foo == None: pass

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

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    is``True如果比较相同的对象实例,则始终返回

    ==最终由该__eq__()方法确定

    >>> class Foo(object):
           def __eq__(self, other):
               return True
    
    >>> f = Foo()
    >>> f == None
    True
    >>> f is None
    False
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看