python深拷贝和浅拷贝的实验
浅拷贝(Shallow Copy): 只复制最外层对象,内部对象的引用不变。
深拷贝(Deep Copy): 复制对象及其所有子对象。
浅拷贝会创建一个新对象,然后将原始对象中的所有引用复制到新对象中。这意味着,如果原始对象包含的是不可变类型(如整数、字符串、元组)的属性,那么浅拷贝将复制这些不可变类型的数据;但如果原始对象包含的是可变类型(如列表、字典、集合)的属性,那么浅拷贝将只复制这些可变类型的引用,而不是它们的内容。
深拷贝会创建一个新对象,然后递归地复制原始对象中的所有子对象。这意味着,无论原始对象包含的是不可变类型还是可变类型的属性,深拷贝都会复制它们的内容,而不是引用。
import copy
class MyClass:
def __init__(self, number, my_list):
self.number = number
self.my_list = my_list
# 创建一个自定义对象实例
original_obj = MyClass(10, [1, 2, 3])
# 使用deepcopy()函数进行深拷贝 使用copy.copy()进行浅拷贝
copied_obj = copy.copy(original_obj)
# 修改原始对象中的列表和整数,检查拷贝对象是否受到影响
original_obj.number = 20
original_obj.my_list.append(4)
# 输出结果,验证深拷贝/浅拷贝
print(original_obj.number)
print(original_obj.my_list)
print(copied_obj.number)
print(copied_obj.my_list)