浅拷贝
完整的拷贝所有信息 包裹内部对象的包含关系等
>>> a = [1,2]
>>> b = a #或 b = copy.copy(a)
>>> b.append(3)
>>> b
[1, 2, 3]
>>> a
[1, 2, 3]
浅拷贝是拷贝引用(就是黄色箭头)
可以通过 id(a) == id(b)来查看
>>> id(a)
4503060872
>>> id(b)
4503060872
如果是赋值,那么他们的id是一样的
如果是copy.copy 那么他们的id不太,但是拷贝后的变量中的元素指向是相同的,但如果a是元组类型,那么id不变,因为元组是不可变类型。
>>> a = [1,2]
>>> b = [3,4]
>>> c = [a,b]
>>> d = copy.copy(c)
>>> id(c)
4503060872
>>> id(d)
4504400776
>>> id(c[0])
4504274312
>>> id(d[0])
4504274312
深拷贝
拷贝所有的值,形成一个全新的对象。
>>> import copy
>>> a = [1,2]
>>> b = [3,4]
>>> c = [a,b]
>>> d = copy.copy(c)
>>> e = copy.deepcopy(c)
>>> e
[[1, 2], [3, 4]]
>>> id(c[0])
4504274312
>>> id(e[0])
4504400840
>>> a.append(666)
>>> c
[[1, 2, 666], [3, 4]]
>>> d
[[1, 2, 666], [3, 4]]
>>> e
[[1, 2], [3, 4]]