python中针对小整数有一个专门的缓存机制,位于[-5, 257)
之间的小整数会专门分配额外的空间。
它们不会被GC回收掉,并且使用这些整数赋值时变量都指向同一个内存地址。
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# -*- - 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() |
输出
1 2 |
53350288 47014728 47020416 53350264 53350240 47014728 47020416 53350216 |
可以看到两个函数中-5和256申请的内存地址都一样,而另外两个都不指向同一个内存。
评论