我正在阅读有关Python如何管理变量的信息。该书说整数字面量存储在内存中的连续内存地址中。也就是说,如果在(x)处存储15,则在(x + 32)处存储16。等等。
因此,如果我们声明如下内容:
a = 15
它只是指向值15的内存位置。如果之后我们声明
a = 16
它开始指向代表16的相邻块。
但是我意识到那一定是浪费内存。我了解到,所有内存地址都填充有从int的最小值到int的最大值的数字。
我需要知道Python为什么要实现内存密集型程序?还是我误会了?如果我理解不正确,Python如何提供连续的内存块以及如何分配内存地址?
答案 0 :(得分:0)
您的书是错误的。 int
未存储在连续的内存地址中,而是像其他对象一样被分配了对象。小型int
可能是连续的(CPython批量缓存小型int
,因此它们更可能是连续的),但这充其量只是实现细节。
CPython小型int
高速缓存仅适用于-5到256之间的值,因此不会浪费大量内存。所有其他int
值都可以根据需要像普通对象一样创建和销毁,因此:
x = 256
y = x + 1
z = x + 1
为y
和z
分配完全不同的对象引用。