2021-05-25python浅拷贝和深拷贝,形象例子解释

本文深入浅出地解释了Python中的浅拷贝和深拷贝概念,通过比喻苹果手机来形象说明。浅拷贝仅复制对象的引用,当修改可变类型元素时,原始对象和拷贝对象会互相影响。而深拷贝则创建了全新的对象,所有子元素都进行了拷贝,确保修改不会互相影响。此外,文章还澄清了赋值与浅拷贝的区别,指出赋值实际上是创建了一个新的引用,而非拷贝。
摘要由CSDN通过智能技术生成

深浅拷贝区别

浅拷贝

------------copy模块里面的copy方法实现。浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;改变原始对象中为不可变类型的元素的值,不会响拷贝对象。

网上举的例子或者实例都比较抽象,即使这次理解了,过段时间还是会忘。所以仔细总结了一下,我觉得浅拷贝可以比喻为:一个人买了两台同一型号的苹果X手机:苹果X2,是苹果X1的浅拷贝,外形,颜色,材质都一样,但是你给苹果x1套个,贴个的时候,苹果X2是不会有任何变化的,也就是:浅拷贝改变原始对象(X1)中为不可变类型的元素(壳,膜)的值,不会响拷贝对象(X2)。

但是当你用X1中自己的qq,发送了一条消息,再登录X2中自己的qq,相应的也增加了一条已发送的消息,因为X1和X2都同时连接同一个QQ号,共享同一个服务器,两台手机中的qq信息变化,是同时改变的,也就是:浅拷贝后,改变原始对象(X1)中为可变类型的元素(qq消息)的值,会同时影响拷贝对象(X2)

深拷贝

------------copy模块里面的deepcopy方法实现。深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。
理解浅拷贝后,深拷贝就比喻为:两个人各自买了一台同型号的苹果X手机,这时候,无论是手机壳,手机膜,亦或者手机登录的QQ消息,两台手机都是独自存在的,他们共同点就是刚买的时候,外形,颜色材质一样,但是顾客怎么去改变手机,互不影响。

赋值

经过一段时间沉淀,我回顾自认为精通的深浅拷贝,发现实际操作结果和理论出现了偏差,经过整理,我混淆了赋值和浅拷贝。

赋值是:b = a

而浅拷贝:b = a.copy()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值