python下的深拷贝与浅拷贝

今天看了一下《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的引用
同时也可以看出 所谓的 切片拷贝 也是浅拷贝

深拷贝会递归的拷贝对象中的属性和内容