我理解的Python浅拷贝和深拷贝

本文深入探讨Python中对象的浅拷贝与深拷贝机制,解析对象引用、拷贝的区别,以及拷贝操作对不可变对象的影响。通过实例演示,帮助理解Python对象管理的关键概念。

        在 Python 中,标识一个对象唯一身份的是:对象的id(内存地址),而浅拷贝就是创建一个具有相同类型,相同值但不同id的新对象。

        在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。

        浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制

         深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。

        不可变对象类型,没有被拷贝的说法,即便是用深拷贝,查看id的话也是一样的,如果对其重新赋值,也只是新创建一个对象,替换掉旧的而已,不管是深拷贝还是浅拷贝,地址值和拷贝后的值都是一样的

a = [1,2,3]     #创建一个列表
b = a       #复制创建的列表
b.append(4)     #将复制的列表里加入一个元素
print(a,b)

输出结果为:

由结果可见,将a列表赋给b列表后,改变b列表中的值,a列表中的值也相应的发生改变。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值