a = 1b = 1id(a) == id(b) # True以下是Python优化内存消耗并重用两个变量的内存。c = 1.45d = 1.45id(c) == id(d) # False - Why ?在Python的情况下,不使用这种优化。为什么?float
1 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
CPython(参考解释器)作为实现细节,在-5和256
之间有一个小的int缓存, 用于int
s ;每个值都是唯一的(在实践中并不总是正确的,但大多数时候它是正确的;你不应该依赖它)。
这使得迭代对象等简单任务的成本要低得多(因为所有值都可以从缓存中提取),并为常用的小值节省一些内存。虽然它不是动态大小的,所以创建两次会得到不同的s(并不总是,但在许多情况下;在编译期间应用了其他常量缓存操作,可以折叠在近距离内用作文本的值)。bytes
int
257
id
对于 s 不存在这样的缓存,因为有近乎无限数量的值,并且很少有人可能会在程序的广泛区域中看到重用。float
float
添加回答
举报
0/150
提交
取消