python中复制函数之间的差异

python中复制函数之间的差异,python,function,python-2.7,module,Python,Function,Python 2.7,Module,python中的copy.copy和copy.deepcopy函数有什么区别 >>> copy.deepcopy(li) [1, 2, 3, 4] >>> copy.copy(li) [1, 2, 3, 4] 两者都做同样的事情,有人能告诉我们这些函数具体做了什么吗?copy.copy执行浅拷贝,而不是执行深度拷贝的copy.deepcopy 在考虑: li = [1, 2, 3, 4] 您不会注意到任何差异,因为您正在复制不可变对象,但是请考虑: &g

python中的copy.copy和copy.deepcopy函数有什么区别

>>> copy.deepcopy(li)
[1, 2, 3, 4]

>>> copy.copy(li)
[1, 2, 3, 4]

两者都做同样的事情,有人能告诉我们这些函数具体做了什么吗?

copy.copy
执行浅拷贝,而不是执行深度拷贝的
copy.deepcopy

在考虑:

li = [1, 2, 3, 4]
您不会注意到任何差异,因为您正在复制不可变对象,但是请考虑:

>>> import copy
>>> x = copy.copy(li)
>>> x
[[1, 2], [3, 4]]
>>> x[0][0] = 9
>>> li
[[9, 2], [3, 4]]
由于浅层副本仅复制列表中的每个引用,因此操作这些复制的引用仍将影响原始列表

但是,以下代码:

>>> x.append(1)
将不会对原始列表产生任何影响

>>> import copy
>>> L = [[1,2,3]]
>>> A = copy.copy(L)
>>> A[0].append(4)
>>> A
[[1, 2, 3, 4]]
>>> L
[[1, 2, 3, 4]]
>>> L = [[1,2,3]]
>>> A = copy.deepcopy(L)
>>> A[0].append(4)
>>> A
[[1, 2, 3, 4]]
>>> L
[[1, 2, 3]]