今天看了一下《Python Cookbook》中的对象拷贝问题
关于深拷贝与浅拷贝
import copy
li = [0, 1, 2, 3, 4, 5, [7, 8, 9] ]
li1 = li[:] #切片拷贝
li2 = copy.copy(li) #浅拷贝
li3 = copy.deepcopy(li) #深拷贝
首先打印一下列表中第一个元素的ID
print id(li[6]), id(li1[6]), id(li2[6]), id(li3[6])
结果如下
3073154508 3073154508 3073154508 3073175756
可以看出只有li3[6]的id不同,也就是对里面的listjinxingle一次拷贝,而并非只拷贝了list的引用
同时也可以看出 所谓的 切片拷贝 也是浅拷贝
深拷贝会递归的拷贝对象中的属性和内容