跳到主要内容

Python里面如何拷贝一个对象?

参考答案:

在Python中,拷贝一个对象可以通过两种主要方式来实现:浅拷贝(shallow copy)和深拷贝(deep copy)。

  1. 浅拷贝(Shallow Copy)

浅拷贝创建一个新的对象,这个对象有着原始对象的一些引用。如果原始对象包含其他对象(如列表、类等),则这些内部对象不会被复制,只是复制了它们的引用。

你可以使用copy模块的copy()函数来实现浅拷贝,或者使用对象的copy()方法(如果对象定义了该方法的话)。

import copy

original_list = [1, 2, [3, 4]]
shallow_copy_list = copy.copy(original_list)

print(shallow_copy_list)  # 输出:[1, 2, [3, 4]]
  1. 深拷贝(Deep Copy)

深拷贝创建一个新的对象,并且递归地复制原始对象的所有子对象。这意味着,如果原始对象包含其他对象,则这些内部对象也会被复制,而不仅仅是复制引用。

你可以使用copy模块的deepcopy()函数来实现深拷贝。

import copy

original_list = [1, 2, [3, 4]]
deep_copy_list = copy.deepcopy(original_list)

print(deep_copy_list)  # 输出:[1, 2, [3, 4]]

需要注意的是,深拷贝通常比浅拷贝更耗时,因为它需要复制更多的数据。因此,在选择使用浅拷贝还是深拷贝时,需要根据具体情况进行权衡。

此外,一些对象类型(如数字、字符串和元组)是不可变的,因此对于这些类型的对象,浅拷贝和深拷贝的效果是一样的。