“id”的内存优化

a = 1

b = 1

id(a) == id(b)    # True

以下是Python优化内存消耗并重用两个变量的内存。


c = 1.45

d = 1.45

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

在Python的情况下,不使用这种优化。为什么?float


动漫人物
浏览 103回答 1
1回答

繁星淼淼

CPython(参考解释器)作为实现细节,在-5和256之间有一个小的int缓存, 用于ints ;每个值都是唯一的(在实践中并不总是正确的,但大多数时候它是正确的;你不应该依赖它)。这使得迭代对象等简单任务的成本要低得多(因为所有值都可以从缓存中提取),并为常用的小值节省一些内存。虽然它不是动态大小的,所以创建两次会得到不同的s(并不总是,但在许多情况下;在编译期间应用了其他常量缓存操作,可以折叠在近距离内用作文本的值)。bytesint257id对于 s 不存在这样的缓存,因为有近乎无限数量的值,并且很少有人可能会在程序的广泛区域中看到重用。floatfloat
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python