深拷贝 与浅拷贝(基于python)

本文深入探讨了深拷贝与浅拷贝的概念,通过实例解释了两者的区别。浅拷贝仅复制对象引用,而深拷贝则创建全新的对象副本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天接触了一个新的名词:深拷贝与浅拷贝
很容易理解,在这里记录一下
浅拷贝,可以理解为拷贝指针
举个例子:
a = [1,2]
b = a
可以这么理解: 创建一个存储区用于存储[1,2],变量a指向存储区的地址
b = a
就是 把b指向a的 地址 ,即把b也指向[1,2]的存储区
如图:

图中可以看到ab对象的id是相同的,也就验证了浅拷贝的原理
再一个 稍微复杂的 例子,对比深拷贝与浅拷贝:
在这里插入图片描述
这里可以看到,copy和赋值的 地址有一定的区别,那他们是不是同一类型的拷贝呢?先做个假设:假设他们都是浅拷贝,c和e中的值应该都指向同一个地址,即id(c[1])==id(e[1]):
c[1] 和e[1]如果符合猜想,应该都指向同一个变量b的id
在这里插入图片描述结果已经很明显了
再看深拷贝,新建变量f = copy.deepcopy©
就直接跳开前面的步骤,直接比较最关键的 一步,id(c[1])和id(f[1])
结果如下:
在这里插入图片描述
可以看到两者的 结果并不相同
这样,我们可以把深拷贝理解为创建新的存储单元,复制源单元,而浅拷贝仅仅只是复制了源单元的路径,并没有多余的内存占用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值