Python(四十)深浅拷贝

本文详细介绍了Python中的深拷贝和浅拷贝概念,包括它们的区别和应用场景。浅拷贝仅复制对象的引用,而深拷贝则创建全新的内存空间以复制对象及其内容。对于可变对象,浅拷贝后原对象与拷贝对象间仍有关联,而深拷贝则完全独立。在不可变对象上,深浅拷贝表现一致。文章还探讨了纯元组和非纯元组在深浅拷贝中的行为差异,并提供了相关代码示例和思考题以加深理解。
摘要由CSDN通过智能技术生成

一    深浅拷贝

1) 可变对象: 列表'list'、字典'dict'、集合'set'.

2) 不可变对象: 数字'digit'、字符串'string'、元组'tunple'

测试网站

++++++++++++++"深、浅体现"++++++++++++++

通俗解释:深拷贝是'内容'拷贝,浅拷贝是'地址[引用]'拷贝

区别点:

    1)  深拷贝会创建一个'新的内存空间',拷贝的'值是一样'的,但是内存地址不一样.

    2)  浅拷贝只是拷贝指向原来对象的地址,使'原对象'的'引用计数+1'

1)初始化

2)浅拷贝

浅拷贝:是指把存放'变量的地址值'传给被赋值,是'地址[引用]'拷贝  -->'id进行验证'

换句话:如果'浅拷贝'中,'被拷贝的对象'包含'可变对象',拷贝'后'和拷贝'前'的对象之间还有'关联';否则没有关联

a.copy和copy.copy(a)完成'相同的'效果  

copy浅拷贝:没有拷贝子对象,所以原始数据改变,'子对象会改变'  -->  "表层"

++++++++++++++++"直接赋值"++++++++++++++++

直接赋值: 传递的是该对象的'地址' --> 'b=a'

浅拷贝:传递的是该对象中的'子对象'的地址

说明:'浅拷贝'拷贝的是'子对象的地址' --> 'id不变'

 

浅拷贝:子对象是'可变'和'不可变'的区别?

可变:由于是'地址'引用,所以"一荣俱荣,一损俱损"  -->  "动态[可修改]变化"

不可变:无法'修改'

 3)深拷贝

备注: 核心是'内层对象'的地址是否一样,区分'浅拷贝',这里'不再赘述'

4)对比

关注点: '不可变'原组和'可变列表'的'深'拷贝、'浅'拷贝区别

思考: 为什么'纯元组',深浅拷贝'都一致'  -->  对于'不可变对象'的拷贝,对象的引用并'没有发生变化'

思考: '非纯元组',深浅拷贝的'区别'

5)小结

相关参考 

 相关参考 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值