python的深浅拷贝

|-- 赋值(基本数据类型)
    主要的操作,栈内存的复制
|-- 浅拷贝
    copy就是浅拷贝,只把对象a的所有内容,找到一个内存空间存放一份,再赋值为新的变量。而且并不是把对象完成的拷贝,而是仅仅拷贝第一层对象,如果对象存储子对象,那么子对象还是藕断丝连。

a=[1,2,3]
from copy import copy
b = copy(a)
#此时b=[1,2,3]并且对b执行操作b.append(4),会得到b=[1,2,3,4],a=[1,2,3],不会影响a的值

|-- 深拷贝
如果一个对象中又含有其他对象,使用浅拷贝就只会把包含的id给复制一份,那么对新对象的内容的操作就会影响到旧对象的内容。此时就只能使用深拷贝,即递归查找引用对象,找到内存单元,拷贝内容并开辟内存空间,再存放一份。
实例:
在这里插入图片描述
最佳实践:
1、需要将当前对象拷贝的时候,一. 般建议拷贝为浅拷贝,(效率高, 内存占有少)
2、如果说,就是需要完全分离,请使用深拷贝
注意:元组/字符串/数值不可变类型,所有深浅拷贝后,永远只有一份内存(特殊情况,如元组中存在可变内存的元素(元组中有子元素列表)则不符合该条目 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值