首先说明一下is和==的区别

is表示的是对象标识符,用来检查对象的标识符是否一致,即两个对象在内存中的地址是否一致。在使用a is b的时候,相当于id(a)==id(b)。

==表示两个对象是否相等,相当于调用eq()方法,即'a==b' ==>a.eq(b)。

None在Python里是个单例对象,一个变量如果是None,它一定和None指向同一个内存地址。None是python中的一个特殊的常量,表示一个空的对象,空值是python中的一个特殊值。数据为空并不代表是空对象,例如[],''等都不是None。None和任何对象比较返回值都是False,除了自己。

is None是判断两个对象在内存中的地址是否一致,== None背后调用的eq(),而eq()可以被重载,万一被重载,会造成一定影响,请看下面的例子:


class test():
    def __eq__(self, other):
        return True


t = test()
print(t is None) # False
print(t == None) # True

results matching ""

    No results matching ""