a = 1 b = 1 id(a) == id(b) # True
这里是Python优化内存消耗并为两个变量重用内存。
c = 1.45 d = 1.45 id(c) == id(d) # False - Why ?
在这种情况下 float
float
CPython(引用解释器),作为实现细节, has a small int cache for int s between -5 and 256 ;每个值都是唯一的(在实践中并不总是正确的,但大多数情况下都是正确的;但是您不应该依赖它)。
int
-5
256
这使得一些简单的任务,比如迭代 bytes 对象要便宜得多(因为所有值都可以从缓存中提取),并为常用的 内景 价值观。但它不是动态大小的,所以创建 257 两次就不一样了 id
bytes
内景
257
id
不存在这样的缓存 float s、 因为有无数的 值,很少有可能看到跨程序的广泛重用。