关于python中浅拷贝跟深拷贝的理解

    今天简单谈一下浅拷贝跟深拷贝,其实这两个拷贝都是相对于可变型数据的,当不可变数据被浅拷贝跟深拷贝后,他们都是取内存地址的引用.保证了数据的唯一性.

     (不可变数据类型的优点就是内存中不管有多少个引用,相同的对象只占用了一块内存,节省时间,节省空间.但是它的缺点就是当需要对变量进行运算从而改变变量的引用的对象的值时,由于是不可变的数据类型,所以必须创建新的对象,这样就会使得一次次的改变创建新的对象,不过不再使用内存会被垃圾回收器回收.)

当数据,类型有嵌套时,浅拷贝只会拷贝最顶层的那个数据类型.此时不能保证数据的唯一性.而深拷贝是从内到外全部的数据跟地址拷贝一份并且开辟新的存储空间,如果嵌套了不可变类型的数据类型时.深拷贝也是动不了这种东西的.

示范代码如下:

 

import copy
a=[11,22]
b=[33,44]
d=[a,b]

"""这里使用了浅拷贝只是拷贝了最顶层的数据,开辟新的存储空间接收,但是里面的数据只是引用原始数据的地址eryi.不能保证可变数据的唯一性"""
c=copy.copy(d)
# print(id(c[0]))  # id 18723784
# print(id(a))  # id 18723784
# print(id(c))  7364552
# print(id(d))  8867272

"""深拷贝时"""  # 深拷贝时是从外到里都拷贝数据跟地址,前提是可变数据类型.
e=copy.deepcopy(d)
print(id(e[0]))  # 12562504
print(id(a))  # 12563208
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值