Python对象内存分配规则(详细解读)

Python对象内存分配规则(详细解读)

0872

Python 中关于对象内存的分配规则是什么样的呢?其实,有两个重要的机制分别是赋值机制和缓存重用机制。

下面分别对它们进行介绍:

赋值机制

在 Python 中,等号赋值是指直接将对象的内存指针赋值,示例如下:

x=23
y =45
print("x,y:",id(x),id(y),x,y)
x= y
print("x,y:",id(x),id(y),x,y)

执行代码,输出结果如下:

x,y:1725105328 1725106032 23 45
x,y:1725106032 1725106032 45 45

可以看到,x 与 y 在赋值之前各自有自己的指针,而当赋值之后,x 与 y 不仅有相同的值,而且还有相同的指针。

在赋值之前的 x=23 中,1725105328 所指的内存地址去哪了呢?其实这个 23 还在内存中,当系统判断没有变量引用该内存地址时,系统会使用内存回收机制,按设定好的规则回收该部分内存地址。

缓存重用机制

在优化整数对象时,Python 会根据对象的读取频繁程度以及内存占用情况来考虑,按照一定规则把某些对象存入缓存中。当程序的其他部分代码使用该值时,系统会先去缓存中查找该值,并直接引用找到的缓存地址,不需要额外创建。具体规则见下表:

图片[1]|Python对象内存分配规则
缓存重用机制

定义两个变量,为它们赋予相同的值,并将这两个变量的指针打印出来,然后分别按照缓存的具体规则分别为它们赋值,观察赋值后的两个变量的指针是否相等。如果相等,则表明在Python内部对其使用了缓存机制。

© 版权声明
THE END
喜欢就支持一下吧
点赞2赞赏
分享
评论 抢沙发
HarryPotter的头像|艾奇编程网

昵称

取消
昵称表情