浅拷贝只是增加了一个指针指向一个存在的地址,
而深拷贝是增加一个指针并且开辟了新的内存,这个增加的指针指向这个新的内存,采用浅拷贝的情况,释放内存,会释放同一内存,深拷贝就不会出现释放同一内存的错误
一层的情况:
import copy # 浅拷贝li1 = [1, 2, 3]li2 = li1.copy()li1.append(4)print(li1, li2) # [1, 2, 3, 4] [1, 2, 3] # 深拷贝li1 = [1, 2, 3]li2 = copy.deepcopy(li1)li1.append(4)print(li1, li2) # [1, 2, 3, 4] [1, 2, 3]
多层的情况:
import copy # 浅拷贝 指向共有的地址li1 = [1, 2, 3,[4,5],6]li2 = li1.copy()li1[3].append(7)print(li1, li2) # [1, 2, 3, [4, 5, 7], 6] [1, 2, 3, [4, 5, 7], 6] # 深拷贝 重指向li1 = [1, 2, 3,[4,5],6]li2 = copy.deepcopy(li1)li1[3].append(7)print(li1, li2) # [1, 2, 3, [4, 5, 7], 6] [1, 2, 3, [4, 5], 6]



