python中的浅拷贝与深拷贝

本文通过丈夫与妻子共用银行卡的例子形象地解释了Python中浅拷贝的概念,并进一步通过引入‘小三’角色说明了深拷贝的特点。浅拷贝仅复制对象的第一层,而深拷贝则会递归复制所有层级的对象。

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

浅拷贝可以拿丈夫与媳妇公用一张银行卡来举例  
# python >>> husband = ['liang',123,[10000,6000]] #丈夫的银行卡信息(姓名,id,额度,余额) >>> wife = husband.copy() #媳妇和丈夫公用一张银行卡(姓名与id不同,但是额度与余额相同) >>> wife[0] = 'yue' >>> wife[1] = 456 >>> wife[2][1] -= 3000 #媳妇花费3000 >>> wife ['yue', 456, [10000, 3000]] #显示媳妇余额 >>> husband ['liang', 123, [10000, 3000]] #显示丈夫余额

  

浅拷贝只是拷贝第一层,深拷贝相当于克隆,深拷贝如下:

引入了小三,小三花费的钱媳妇不知道:

>>> liang = ['xin',111,[15000,10000]]
>>> yue = liang.copy()
>>> yue
['xin', 111, [15000, 10000]]
>>> yue[0] = 'mumu'
>>> yue[1] = 222
>>> yue[2][1] -= 5000
>>> yue
['mumu', 222, [15000, 5000]]
>>> liang
['xin', 111, [15000, 5000]]
以上是浅拷贝;

以下是深拷贝:
>>> import copy
>>> xiaosan = copy.deepcopy(liang)
>>> xiaosan[0] ="**"
>>> xiaosan[1] = 333
>>> xiaosan[2][1] -= 1999
>>> xiaosan
['**', 333, [15000, 3001]]            #已经减少啦
>>> liang
['xin', 111, [15000, 5000]]
>>> yue
['mumu', 222, [15000, 5000]]       #媳妇不知道

  

 

转载于:https://www.cnblogs.com/lixinliang/p/8370931.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值