id()
内置函数返回一个整数(或长整数),它保证在它的生命周期内唯一且不变。
相比之下,
is
运算符提供了对象的标识。
那么为什么可能会有两个具有相同id
但在is
检查中返回False
的对象呢?以下是一个示例:
>>> class Test():
... def test():
... pass
>>> a = Test()
>>> b = Test()
>>> id(a.test) == id(b.test)
True
>>> a.test is b.test
False
一个更令人不安的例子:(继续上面的内容)
>>> b = a
>>> b is a
True
>>> b.test is a.test
False
>>> a.test is a.test
False
然而:
>>> new_improved_test_method = lambda: None
>>> a.test = new_improved_test_method
>>> a.test is a.test
True
a.test is a.test
是 False。一旦你知道了这个,剩下的就会很清楚了... - Skilldricka = float('nan'); print a is a, a == a
- user97370a == b
,我是在问id(a) == id(b)
:) - badp