is 是比较两个引用是否指向了同一个对象(引用比较)。
== 是比较两个对象指向的空间里的内容是否相等。
a = [1,2,3]
b = [1,2,3]
print(a is b)
print(a == b)
结果如下:
is==结果.jpg
浅拷贝是对于一个对象的顶层拷贝
通俗的理解是:拷贝了引用,并没有拷贝内容
a = [1,2,3]
print(id(a))
b = a
print(id(b))
a.append(4)
print(a)
print(b)
结果如下:
浅拷贝结果.jpg深拷贝是对于一个对象所有层次的拷贝(递归)
import copy
a = [1,2,3]
print(id(a))
b = copy.deepcopy(a)
print(id(b))
print(b)
a.append(666)
print(a)
print(b)
结果如下:
深拷贝结果.jpgimport copy
l1 = [1,2,3,4]
print(id(l1))
l2 = copy.copy(l1)
print(id(l2))
l1.append(666)
print(l2)
a = (11,22,33)
print(id(a))
b = copy.copy(a)
print(id(b))
结果如下:
copy.copy结果.jpg从上个例子可以看出copy模块中的copy对于不同的类型,拷贝出的类型也有不同。
网友评论