python 深拷贝和浅拷贝

b=a #赋值,传对象的引用
c=copy.copy(a) #对象拷贝,浅拷贝
d=copy.deepcopy(a) #对象拷贝,深拷贝

深拷贝:深拷贝是地址的拷贝,深拷贝就是完全跟以前就没有任何关系了,原来的对象怎么改都不会影响当前对象,
浅拷贝:浅拷贝是值的拷贝,原对象的list元素改变的话会改变当前对象,如果当前对象中list元素改变了,也同样会影响原对象

通常复制的时候要用深拷贝,因为浅拷贝后,两个对象中不可变对象指向不同地址,相互不会改变,但是两个对象中的可变元素是指向相同的地址,一个变了,另一个会同时改变,会有影响(list是可变对象)

不可变对象包括:int,float,complex,long,str,unicode,tuple、

浅拷贝时拷贝的新对象里的可变元素与原对象里的可变元素指向同一个地址,浅拷贝时只拷贝了浅层次的数据结构(不可变元素),深层次的可变元素并没有拷贝到新地址里,深拷贝则会把深层次的可变元素和浅层次的不可变元素到拷贝到新地址里面去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值