
在Python中,对象拷贝可以分为浅拷贝和深拷贝两种方式。
浅拷贝
浅拷贝是指创建一个新的对象,该对象与原始对象共享一部分内存空间,因此对于原始对象中的可变对象,浅拷贝后的对象和原始对象会共享这些可变对象的引用,即修改其中一个对象的可变对象会影响到另一个对象。
在Python中,可以使用 copy() 函数进行浅拷贝:
import copy
a = [1, 2, [3, 4]]
b = copy.copy(a)
b[2][0] = 5
print(a) # 输出 [1, 2, [5, 4]]
print(b) # 输出 [1, 2, [5, 4]]
在上面的示例代码中,我们使用 copy() 函数对列表 a 进行了浅拷贝,并修改了拷贝后的列表 b 中的第三个元素的第一个元素。结果显示,修改后的 b 列表和原始的 a 列表都发生了改变。
深拷贝
深拷贝是指创建一个新的对象,该对象与原始对象完全独立,不共享任何内存空间,因此对于原始对象中的可变对象,深拷贝后的对象和原始对象不会共享这些可变对象的引用,即修改其中一个对象的可变对象不会影响到另一个对象。
在Python中,可以使用 deepcopy() 函数进行深拷贝:
import copy
a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
b[2][0] = 5
print(a) # 输出 [1, 2, [3, 4]]
print(b) # 输出 [1, 2, [5, 4]]
在上面的示例代码中,我们使用 deepcopy() 函数对列表 a 进行了深拷贝,并修改了拷贝后的列表 b 中的第三个元素的第一个元素。结果显示,修改后的 b 列表发生了改变,而原始的 a 列表没有发生改变。
需要注意的是,深拷贝的效率比浅拷贝低,因为它需要对原始对象进行完全的复制。因此,在进行对象拷贝时,应根据实际需求选择适当的拷贝方式。