copy.copy()与copy.deepcopy()的详解

时间:2023-03-09 03:36:05
copy.copy()与copy.deepcopy()的详解

copy.copy()

元组和列表调用这个方法效果也不一样。

元组的效果:

a = [1,2,3]
b = [4,5,6]
c = (a,b)
e = copy.copy(c)

copy.copy()与copy.deepcopy()的详解

可以看到:e和c是指向了同一个地址。

列表的效果:

copy.copy()与copy.deepcopy()的详解

可以看到:c和e指向了不同的地址,但是c和e里面的内容是指向了相同的地址

copy.copy()与copy.deepcopy()的详解

copy.deepcopy()

这个是深拷贝,并且是递归的形式拷贝的

元组的效果:

copy.copy()与copy.deepcopy()的详解

copy.copy()与copy.deepcopy()的详解

可以看到:它是把所有的内容都进行了了深拷贝

列表的效果:

copy.copy()与copy.deepcopy()的详解

可以看到:它是把所有的内容都进行了了深拷贝

总结:copy.deepcopy()在元组和列表的嵌套上的效果是一样的,都是进行了深拷贝(递归的)