python中当对两个对象进行比较时,可以is 也可以用 == , 那它们到底有啥区别呢?
is 比较的是两个对象是不是完全相同,是不是同一个对象,内存地址是否完全一样。
== 比较的是两个对象是不是完全相等,是不是同一个对象不要紧,要紧的内容一致就可以了。
理论说起来比较枯燥,举个栗子吧.
x = [1,2,3,4,5,6]
y = x
z = [1,2,3,4,5,6]
print(x is y)
print(x is z)
print(x == y)
print(x == z)
>>
True
False
True
True
结果就是上面的,为什么呢?
y=x, 相当于y只是x的一个引用,其指向内存地址与x是一样的.
而z虽然内容与x是一样的,但是z是重新赋值的,即是在新的内容地址上写入的值.
不信可以试试:
print(id(x))
print(id(y))
print(id(z))
>>
2210741742152
2210741742152
2210741742472
可见,x和y的内存地址是一致的,而z是不一样的.
所以,
x is y 就是True
x is z 就是False
x == y 就是True
x == z 就是True
感觉讲清楚了,那就这样吧.