>>> a=256
>>> id(a)
139840231892864
>>> b=256
>>> id(b)
139840231892864
>>> id(a)==id(b)
True

>>> a=257
>>> id(a)
139840094039632
>>> b=257
>>> id(b)
139840094039920
>>> id(a)==id(b)
False

这是因为Python在内存中维护了一个特定数量的常量池,对于一定范围内的数值均不再创建新的对象,而直接在这个常量池中进行分配。实际上在我的机器上使用如下代码可以得到这个常量池的范围是 [0, 256] ,而 256 刚好是一个字节的二进制码可以表示的值的个数 

 posted on 2023-01-16 14:46  boye169  阅读(7)  评论(0编辑  收藏  举报