Python深copy和浅copy

1、Python数据存储

Python中一切皆对象。Python中构造的任何数据类型都是一个对象,不管是数字、字符串、字典等常见的数据结构,还是函数,甚至我们导入的模块等,Python都会把它当做是一个对象来处理。

Python对象拥有三个属性:

  • 身份
  • 类型

对象在内存中的地址表明他的身份,通过id方法查看;类型表示对象可以存储什么类型;值就是具体变量的值。

对于整数而言,如aa=1234,存储方式如下:

 对于字符串,如a='1234',存储方式如下:

 2、深拷贝和浅拷贝概念理解

(1)浅拷贝

只拷贝原数据的首地址,然后通过原数据的首地址去获取内容

(2)深拷贝

开辟一块新内存,将被拷贝内容全部拷贝过来。

(3)优缺点对比

深拷贝:拷贝成都高,将原数据复制到新的内存空间中。改变拷贝后的内容不影响原数据内容。但是深拷贝耗时长,且占用内存空间。

浅拷贝:拷贝程度低,只复制原数据的地址,其实是将副本的地址指向原数据地址。修改副本内容,是通过当前地址指向原数据地址去修改,所以修改副本内容会影响原数据内容。浅拷贝耗时短,占用内存空间少。

也就是说,

浅copy只会把第一级内存进行copy,如果原数据第一级所存储的ID发生变化,那么不会影响浅copy的值,如果元数据第一级之后的内存发生变化,那么就会影响的浅copy的值

而深copy是,将对象的每一级存储进行了复制,所以原数据的无论怎么变化都不会影响深copy 的值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值