深拷贝(Deep copy)和浅拷贝(Shallow copy)是在计算机编程中常用的两种拷贝方式,它们有以下区别:
下面是一个示例,帮助理解这两个概念:
- import copy
-
- # 创建一个列表对象
- original_list = [1, 2, 3, [4, 5]]
-
- # 浅拷贝
- shallow_copy = copy.copy(original_list)
-
- # 深拷贝
- deep_copy = copy.deepcopy(original_list)
-
- # 修改原始列表中的元素
- original_list[0] = 10
- original_list[3][0] = 40
-
- # 打印结果
- print(original_list) # 输出: [10, 2, 3, [40, 5]]
- print(shallow_copy) # 输出: [10, 2, 3, [40, 5]]
- print(deep_copy) # 输出: [1, 2, 3, [4, 5]]
在这个示例中,浅拷贝创建了一个新的列表shallow_copy,但是其中的子列表仍然是同一个对象,所以它们随着原始列表的改变而改变。而深拷贝通过完全复制原始列表的内容,包括子列表,创建了一个全新的对象deep_copy,所以它的改变不会影响原始的或其他复制的列表。
需要注意的是,深拷贝可能会占用更多的内存,特别是在处理大型对象或嵌套对象时。因此,在选择拷贝方式时需要根据具体情况权衡利弊。
其实简单来说就是B复制了A的内容,我们修改A,看B是否变化,B发生了改变说明是浅拷贝,B不发生改变是深拷贝