“浅复制”是指content字典的内容不是按值复制的,而只是创建一个新的引用。
>>> a = {1: [1,2,3]}
>>> b = a.copy()
>>> a, b
({1: [1, 2, 3]}, {1: [1, 2, 3]})
>>> a[1].append(4)
>>> a, b
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
相反,深复制将按值复制所有内容。
>>> import copy
>>> c = copy.deepcopy(a)
>>> a, c
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
>>> a[1].append(5)
>>> a, c
({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
So:
-
b = a
:参考作业,制作a
and b
指向同一个对象。
-
b = a.copy()
:浅复制,a
and b
将成为两个独立的对象,但它们的内容仍然共享相同的引用
-
b = copy.deepcopy(a)
:深度复制,a
and b
的结构和内容变得完全孤立。