Python中整数的缓存机制

初学Python的人可能对如下代码感到非常困惑

>>> a=-5
>>> b=-5
>>> a is b
True
>>> a=-6
>>> b=-6
>>> a is b
False
>>> a=256
>>> b=256
>>> a is b
True
>>> a=257
>>> b=257
>>> a is b
False

我们将a和b赋为相同的值的时候,当执行a is b操作时,结果有的为True,有的为False.

原因在哪?


Python 是面向对象的语言,一切皆对象,整数也不例外,只要是对象,其创建和销毁都需要一定的开销,而一些小整数在编程过程中可能会大量重复使用,如果频繁的创建和销毁这些对象必然严重影响程序执行效率,因此Python采用缓冲池来将使用频率较高的对象存储起来,使用时直接拿来用,而不用去创建。

由于内存的限制,不可能将所有整数均存储在缓冲池中,Python缓冲池中整数范围为[-5,256],也就是说,当创建的整数对象在大于等于-5小于等于256时,直接从缓冲池中去,如果不在此范围则创建该对象。

个人认知有限。欢迎指正。

猜你喜欢

转载自blog.csdn.net/venus14/article/details/80289407