代码之家  ›  专栏  ›  技术社区  ›  ceth

id的内存优化

  •  1
  • ceth  · 技术社区  · 5 年前
    a = 1
    b = 1
    id(a) == id(b)    # True
    

    这里是Python优化内存消耗并为两个变量重用内存。

    c = 1.45
    d = 1.45
    id(c) == id(d)   # False - Why ?
    

    在这种情况下 float

    1 回复  |  直到 5 年前
        1
  •  3
  •   ShadowRanger    5 年前

    CPython(引用解释器),作为实现细节, has a small int cache for int s between -5 and 256 ;每个值都是唯一的(在实践中并不总是正确的,但大多数情况下都是正确的;但是您不应该依赖它)。

    这使得一些简单的任务,比如迭代 bytes 对象要便宜得多(因为所有值都可以从缓存中提取),并为常用的 内景 价值观。但它不是动态大小的,所以创建 257 两次就不一样了 id

    不存在这样的缓存 float s、 因为有无数的 值,很少有可能看到跨程序的广泛重用。