【python】deepcopy深拷贝浅拷贝(结合例子理解)
deepcopy
是 Python copy
模块中的一个函数,用来创建一个对象的完全独立副本,包括其内部嵌套的所有对象。
它解决的问题是:当你复制一个复杂的数据结构(如列表套列表、对象套对象)时,如果你只是普通的赋值或用 copy.copy()
(浅拷贝),内部结构仍然共享内存,一改全改。而 deepcopy
会彻底复制所有层级,互不影响。
代码对比
1.使用deepcopy结果
from copy import deepcopya = [1, 2, [3, 4]]
b = deepcopy(a)
b[2][0] = 99print(a) # 原列表没变 → [1, 2, [3, 4]]
print(b) # 变了 → [1, 2, [99, 4]]
2.未使用浅拷贝
from copy import deepcopya = [1, 2, [3, 4]]
b = a
b[2][0] = 99print(a)
print(b)
总结
方法 | 是否复制内部结构? | 是否互相影响? |
---|---|---|
= | ❌(只是引用) | ✅ |
copy.copy() (浅拷贝) | ⚠️ 只复制最外层 | ✅(嵌套结构共享) |
copy.deepcopy() | ✅(所有层级都复制) | ❌(完全独立) |