内存驻留机制:月薪30k+的Python大神都知道的冷知识 |【知了干货分享】

本文深入探讨Python的内存驻留机制,包括可变与不可变类型的存储、代码块缓存、小数据池,揭示Python如何提高运行效率。讲解了整数和字符串在不同情况下的驻留规则,并建议使用join而非'+'连接字符串以提升性能。
摘要由CSDN通过智能技术生成

Python中的可变类型和不可变类型是如何存储的?小数据池对于整形存储有什么影响?Python解释器为了提高字符串使用的效率和使用性能又做了哪些优化?本文将为你慢慢道来,让你深入了解Python中的内存驻留。接下来话不多说,直接进入正题。

1可变类型和不可变类型

咱们先来复习一下Python中的不可变类型和可变类型。可变类型:列表、字典、可变集合,可以通过操作原处修改,而不用创建新的对象;不可变类型:数字、字符串、元组、不可变集合,不支持原地修改。看下面的例子:
在这里插入图片描述
从上图能够看到,我们可以对可变类型进行原地修改,id不变;而去操作不可变对象时,因为它不可原地修改,内部没有实现__iadd__()方法,所以a += 1等同于a = a + 1,创建了新的对象,id改变。关于id这里需要注意,我们用id函数获取的是对象的唯一标识符,只不过在CPython解释器下,刚好返回的是对象的内存地址

我们可以看到,对于不可变类型,每次修改一次就要创建一个新的对象。如果过多的进行修改操作无疑会消耗很大的内存。出于提高效率,减少内存消耗的考量,Python实现了自己的内存驻留机制。

2代码块的缓存机制

我们先来看Python官方对于代码块的定义:

https://docs.python.org/3/r

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值