百科狗-知识改变命运!
--

python 深浅拷贝

百变鹏仔1年前 (2023-11-21)阅读数 31#技术干货
文章标签对象

copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

importcopy

a=[1,23,66,[6,8]]

d=a

b=copy.copy(a)

c=copy.deepcopy(a)

a.append(99)#[1,23,66,[6,8],99][1,23,66,[6,8]][1,23,66,[6,8]][1,23,66,[6,8],99]

print(a,b,c,d)

a[3].append(88)#[1,23,66,[6,8,88],99][1,23,66,[6,8,88]][1,23,66,[6,8]][1,23,66,[6,8,88],99]

print(a,b,c,d)

垃圾回收机制

一.Python内部使用引用计数机制,来保持追踪内存中的对象,所有对象都有引用计数.一个对象分配一个新名称,然后将其放入到一个容器中(如列表,元祖,字典),这样这个计数就增加.当我们使用delect删除语句对对象别名进行删除或者,引用超过了这个作用域,或者被重新复制的时候,引用的计数会减少.对于不可变数据(数字,字符串)解释器会在程序的不同部分共享内存,以便节约内存.sys.getrefcount()函数可以获得对象的当前引用计数

二.这个垃圾回收机制呢,就是当一个对象的引用计数归零时,他就会被垃圾回收机制处理掉,当两个对象相互引用的时候,del语句可以减少引用次数并销毁引用底层对象的名称,由于每个对象都包含一个对其他对象的引用,因此引用计数不会归零,对象也不会销毁,为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。

三.内存池机制

Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。

1,Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。

2,Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。

3,对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。

哈希

python 深浅拷贝

Hash(哈希)一般译为“散列”,它是一种加密过的存储结构。它将任意长度的输入,通过散列算法,转换成固定长度的输出。而这个输出就是散列的值。并且,这个转换过程是一种压缩映射,所以,散列值的空间远小于输入值的空间。另外,不同的输入可能会散列出相同的输出,所以不能从散列值来确定其输入值是什么。hash应用中一个简单的例子就是短链接。短链接是一个hash后的散列值,它的输入值就是原始链接。首先,我们拿到一个原始链接,到一个具有hash功能的服务器上,做hash转换,得到一个散列值,这个值就是短链接的值。前面说到过,散列值会远小于输入值,所以短链接比原链接字符长度小了许多。然后,再将这个短链接与原链接存到服务器上的数据库中,形成映射关系。当有人访问服务器上的短链接时,只需要从映射关系中找到原始链接,即可跳转到原始链接。

Hash的一个特点就是性能好,查询起来很快。它是一种以空间换取时间的方案。

简单说,如果一个对象是可哈希的,那么生命周期内这个对象不可变,如:int,float,string,tuple.

反之,不可哈希的对象可变,像lsit,dict,set.

以上内容为大家介绍了python深浅拷贝,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:开发教育。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)