为了账号安全,请及时绑定邮箱和手机立即绑定

“id”的内存优化

“id”的内存优化

动漫人物 2022-08-16 18:58:07
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(并不总是,但在许多情况下;在编译期间应用了其他常量缓存操作,可以折叠在近距离内用作文本的值)。bytesint257id

对于 s 不存在这样的缓存,因为有近乎无限数量的值,并且很少有人可能会在程序的广泛区域中看到重用。floatfloat


查看完整回答
反对 回复 2022-08-16
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信