主要是对复制操作进行了封装,对于该模块特定的错误,将引发 copy.Error。
1. 接口摘要
import copy
x = copy.copy(y) # 创建 y 的浅表副本
x = copy.deepcopy(y) # 创建 y 的深层副本
2. 浅表复制和深层复制的区别
浅表复制和深层复制之间的区别仅对复合对象(包含其他对象的对象,例如列表或类实例)相关。
-
浅表复制构造一个新的复合对象,然后(尽可能地)将相同的对象插入其中,与原始对象包含的对象相同。
-
深层复制构造一个新的复合对象,然后递归地将原始对象中找到的对象的副本插入其中
举个例子就明白了:
假设有一个列表 original = [[1, 2], [3, 4]]。
-
浅层复制:
shallow_copy = copy.copy(original)会创建一个新的列表shallow_copy,其包含与original相同的子列表。即,如果你修改shallow_copy中的子列表,这些更改会反映到original中,因为子列表实际上是共享的。通俗来说就是副本与原件都用的同一个东西,修改一个,就都会变。 -
深层复制:
deep_copy = copy.deepcopy(original)会创建一个全新的列表及其内部的子列表。如果你修改deep_copy中的子列表,original不会受到影响,因为所有的子列表都被复制了一遍。通俗来说就是修改了副本,原件不会变,修改了原件,副本不会变。
977

被折叠的 条评论
为什么被折叠?



