目录
一、绪论
Python 中,其实存在许多内置的性能/效率优化机制。对不可变对象而言,最常见的有 小整数池 和 字符串驻留 (String Interning),而学习这些对于我们了解 Python 及其内存优化机制是很有帮助的。
若对不可变对象的了解还不够深刻,不妨先阅读《【Python】详解 可变对象、不可变对象 与 深浅拷贝 》一文以加深理解。
二、说明
2.1 小整数池
为避免因创建相同的值而频繁申请和回收内存空间带来的效率问题,Python 解释器会在启动时创建一个范围为 [-5, 256] 的 小整数池,该范围内预定义的“小”整数对象将在全局解释器范围内被重复使用,而不会被垃圾回收机制回收。例如,使用 is 关键字比较一些测试用例的 id:
>>> x = -6
>>> y = -6
>>> x is y # id(x)=2891176270608, id(y)=2891176270192
False
# ----------------------------------------------------------------------------
>>> x = 257
>>> y = 257
>>> x is y # id(x)=2891176270192, id(y)=2891176270608
False
# ----------------------------------------------------------------------------
>>> x = -4
>>> y = -4
>>> x is y # id(x)=1575903296, id(y)=1575903296
True
# ----------------------------------------------------------------------------
>>> x = 256
>>> y = 256
>>> x is y # id(x)=1575911616, id(y)=1575911616
True
再看一例:
>>> x = 257; y = 257
>>> x is y