python中针对小整数有一个专门的缓存机制,位于[-5, 257)
之间的小整数会专门分配额外的空间。
它们不会被GC回收掉,并且使用这些整数赋值时变量都指向同一个内存地址。
测试代码
# -*- coding:utf8 -*-
def f1():
print id(-6), id(-5), id(256), id(257)
def f2():
print id(-6), id(-5), id(256), id(257)
if __name__ == "__main__":
f1()
f2()
输出
53350288 47014728 47020416 53350264
53350240 47014728 47020416 53350216
可以看到两个函数中-5和256申请的内存地址都一样,而另外两个都不指向同一个内存。
此处评论已关闭