下面是一个Python代码,用于演示如何将不可变类型(例如整数)存储在内存中:
x = 10 print (id(x)) print (id(10))
输出:
140731768218288
140731768218288
我的理解:10存储在内存地址140731768218288中,x指向10。在内存中创建了一个整数10作为不可变的整数对象。
x = x + 1 print (id(x)) print (id(11)) print (id(10))
输出:
140731768218320
140731768218320
140731768218288
[我的理解:10仍存储在内存地址140731768218288。同时,在内存地址140731768218320上将整数11创建为不可变对象,并将指针x重新分配给该地址。
问题:可以以某种方式清除存储10的存储地址吗? (同样,我想到的示例是计算有效的代码,该代码处理较大的浮点数,如果这些值不会再用于“未来”目的,则似乎不必在内存中存储“先前”的值。)
下面是一个Python代码,用于演示如何将不可变类型(例如整数)存储在内存中:x = 10 print(id(x))print(id(10))输出:140731768218288 140731768218288 My ...
CPython对于(-5, 256)
范围内的所有数字都有特殊的位置>
他们为那些较低的数字进行了这种优化,我想可以提高性能,您可以在CPython代码中看到它。 (通过这种方式,他们避免了很多新PyObject的创建和分散注意力)