Python 深拷贝与浅拷贝详解:copy.copy 与 copy.deepcopy 的区别
本文详细解析 Python 中 copy.copy 浅拷贝与 copy.deepcopy 深拷贝的核心区别。通过代码示例展示,浅拷贝仅复制父对象而共享子对象引用,修改内部可变对象会影响所有引用;深拷贝则完全独立复制对象及其子对象。掌握两者差异对避免数据意外修改至关重要。
相比之下,copy.deepcopy 方法用于实现深拷贝。它不仅复制父对象,还会递归地复制对象内部包含的所有子对象。因此,深拷贝生成的新对象与原对象在内存中完全独立,修改其中一个对象的任何层级内容都不会影响另一个。
为了直观展示这两种拷贝方式的行为差异,以下提供了一个具体的代码示例。该示例创建了一个包含嵌套列表的原始对象,并通过不同方式生成副本,随后对原始对象进行多层级修改,观察各副本的状态变化。
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
b = a #赋值,传对象的引用
c = copy.copy(a) #对象拷贝,浅拷贝
d = copy.deepcopy(a) #对象拷贝,深拷贝
a.append(5) #修改对象a
a[4].append('c') #修改对象a中的['a', 'b']数组对象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d输出结果:
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









