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申请的内存地址都一样,而另外两个都不指向同一个内存。

最后修改:2018 年 12 月 16 日
如果觉得我的文章对你有用,请随意赞赏