python为不同的对象如何分配内存的小知识

Posted 沧海一粟,何以久远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python为不同的对象如何分配内存的小知识相关的知识,希望对你有一定的参考价值。

id方法的返回值就是对象的内存地址。

python中会为每个出现的对象分配内存,哪怕他们的值完全相等(注意是相等不是相同)。如执行a=2.0,b=2.0这两个语句时会先后为2.0这个Float类型对象分配内存,然后将a与b分别指向这两个对象。所以a与b指向的不是同一对象:
>>> a=2.0
>>> b=2.0
>>> a is b
False
>>> a==b
True
但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,python采取重用对象内存的办法,如指向a=2,b=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:
>>> a=2
>>> b=2
>>> a is b
True
如果赋值的不是2而是大的数值,情况就跟前面的一样了:

>>> a=5555
>>> b=5555
>>> a is b
False
>>> id(a)
12464372
>>> id(b)
12464396

 

 

参考:

1、https://www.cnblogs.com/dplearning/p/5998112.html

以上是关于python为不同的对象如何分配内存的小知识的主要内容,如果未能解决你的问题,请参考以下文章

为啥相同对象的内存空间分配不同?

Python如何管理内存?

go:内存分配

java中的内存分配

如何使用 Loki 的小对象分配器?

如何在 Lua 中成功使用 Loki 的小对象分配器?