当前位置:首页>python>Python 深拷贝 vs 浅拷贝 90%的人都踩过坑

Python 深拷贝 vs 浅拷贝 90%的人都踩过坑

  • 2026-10-11 07:39:18
Python 深拷贝 vs 浅拷贝 90%的人都踩过坑

Python 深拷贝 vs 浅拷贝 90%的人都踩过坑

Python 深拷贝 vs 浅拷贝 90%的人都踩过这个坑

先看这段代码

a = [[1, 2], [3, 4]]
b = a
b[0][0] = 99
print(a)

猜猜输出什么?

没错,a 也被改了 变成了 [[99, 2], [3, 4]]

因为你以为在复制 其实只是贴了个标签
两个名字指向同一个对象

搞清楚这三个就够了👇

赋值 = 贴标签
浅拷贝 = 新瓶子装旧酒
深拷贝 = 里外全是新的

代码怎么写

浅拷贝
copy.copy(original)
或者 original[:]
或者 list(original)

深拷贝
copy.deepcopy(original)

面试最爱问 工作天天用

默认参数这个坑你肯定踩过👇

def add(item, lst=[]):
lst.append(item)
return lst

add(1) -> [1]
add(2) -> [1, 2] 数据被污染了

修复方法

def add(item, lst=None):
if lst is None:
lst = []
lst.append(item)
return lst

测试数据也要注意

from copy import deepcopy

class TestBase:
def setup_method(self):
self.data = deepcopy(TEST_DATA)

每人一份 互不污染

性能区别

赋值 最快
浅拷贝 快
深拷贝 慢几百倍

使用原则

一层数据用浅拷贝
多层嵌套用深拷贝
只读不改直接赋值

总结

赋值只是贴标签
浅拷贝新瓶子装旧酒
深拷贝里外全部独立
默认参数别写 [] 或 {}
测试数据用 deepcopy
深拷贝慢 按需用

#Python #编程 #程序员 #面试 #自学Python

名称已清空
微信扫一扫赞赏作者
喜欢作者其它金额
作品
暂无作品
喜欢作者
其它金额
最低赞赏 ¥0
其它金额
赞赏金额
¥
最低赞赏 ¥0
1
2
3
4
5
6
7
8
9
0
.
河南,17分钟前,

最新文章

随机文章