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对象内存分配规则](https://www.91yiqixue.com/wp-content/uploads/2022/05/内存机制.gif)
定义两个变量,为它们赋予相同的值,并将这两个变量的指针打印出来,然后分别按照缓存的具体规则分别为它们赋值,观察赋值后的两个变量的指针是否相等。如果相等,则表明在Python内部对其使用了缓存机制。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧