python中的is与==
>>> a = [1, 2, 3]
>>> b = a[:]
>>> b
[1, 2, 3]
>>> id(a)
140278317281792
>>> id(b)
140278317209936
>>> a is b
False
>>> a == b
True
解释:
上述代码中,将a中的元素赋给了b,但是b是新的一个列表,因此与a的地址是不同的。id()
方法会将对象的内存输出出来,可以看到a与b输出的地址确实不同。
接下来,is
方法是判断a与b的地址是否严格相等,若严格相等,则输出true
。
而==
方法判断的是两者的值是否相等,会调用类中重写的__eq__(self, obj)
方法。