1.官方文档定义:
Python的浅层 (shallow) 和深层 (deep) 复制
浅层复制和深层复制之间的区别仅与复合对象 (即包含其他对象的对象,如列表或类的实例) 相关:
-
一个 浅层复制 会构造一个新的复合对象,然后(在可能的范围内)将原对象中找到的 引用 插入其中。
-
一个 深层复制 会构造一个新的复合对象,然后递归地将原始对象中所找到的对象的 副本 插入。
深度复制操作通常存在两个问题, 而浅层复制操作并不存在这些问题:
-
递归对象 (直接或间接包含对自身引用的复合对象) 可能会导致递归循环。
-
由于深层复制会复制所有内容,因此可能会过多复制(例如本应该在副本之间共享的数据)
2.通过示例进行了解
可以使用构造方法 list()、 [:]、copy.copy()进行浅层复制操作
>>> xs = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> ys = list(xs)
>>> ys
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> xs.append('new')
>>> xs
[[1, 2, 3], [4, 5, 6], [7, 8, 9], 'new']
>>> ys
[[1, 2, 3], [