如何理解将内存地址分配给变量(int)?

时间:2019-07-12 02:18:22

标签: python variables memory

我正在阅读有关Python如何管理变量的信息。该书说整数字面量存储在内存中的连续内存地址中。也就是说,如果在(x)处存储15,则在(x + 32)处存储16。等等。

因此,如果我们声明如下内容:

a = 15

它只是指向值15的内存位置。如果之后我们声明

a = 16

它开始指向代表16的相邻块。

但是我意识到那一定是浪费内存。我了解到,所有内存地址都填充有从int的最小值到int的最大值的数字。

我需要知道Python为什么要实现内存密集型程序?还是我误会了?如果我理解不正确,Python如何提供连续的内存块以及如何分配内存地址?

1 个答案:

答案 0 :(得分:0)

您的书是错误的。 int未存储在连续的内存地址中,而是像其他对象一样被分配了对象。小型int可能是连续的(CPython批量缓存小型int,因此它们更可能是连续的),但这充其量只是实现细节。

CPython小型int高速缓存仅适用于-5到256之间的值,因此不会浪费大量内存。所有其他int值都可以根据需要像普通对象一样创建和销毁,因此:

x = 256
y = x + 1
z = x + 1

yz分配完全不同的对象引用。