复制:没有在内存中重新创建,b是对a列表的又一个引用,a与b的id相同,可以说是完全相同的。
a = [11,22,33]
b = a
print(id(a))------3229560921736
print(id(b))-------3229560921736
a和b指向同一片内存,为浅拷贝
copy:
copy.copy(浅拷贝):只拷贝父对象,不会拷贝对象的内部的子对象。
copy.deepcopy(深拷贝):拷贝对象及其子对象。
注意:当对不可变类型拷贝时(不论深浅),父对象和子对象都不会拷贝,只是指给。(参看可变和不可变类型)
import copy
a = [11,22,33]
b = [44,55,66]
c = [a,b]
d = copy.copy(c)------仅仅创建了一片内存,用来复制c(即记录a,b地址的内存),d任然保存a,b的地址。
e = copy.deepcopy(c)-----不仅创建了内存保存复制的e,而且创建了内存保存a,b的复制。
a.append(77)
print(d)-----[[11, 22, 33, 77],[44,55,66]
print(e)-----[[11, 22, 33],[44,55,66]]
在深拷贝过程中,无论有多少层级都会在内存中重新写入。