我刚刚看过informative video的Python内存管理。演示者在其中使用了以下代码示例(大约4:15标记):
x = 300
y = 300
在这种情况下,我们有两个名称(x
和y
),每个名称指向300值。Python在执行y = 300
行时如何知道它不需要分配内存而是增加引用计数,因为已经为该值分配了内存(通过x
)?解释器是否在每个实例上比较值?如果是这样,它如何跟踪它已经知道的值(我认为它将使用dict
来做到这一点)?
假设我引入了一个新变量:
z = 100 + 200
z
会不会只是将引用计数再次增加到300?
当我在REPL(Python 3.6,Windows 7 x64)中尝试以下操作时,我得到了不同的内存位置,这进一步使我感到困惑(尽管,公平地说,她说不要在REPL中尝试此操作):>
>>> x = 300
>>> y = 300
>>> print(id(x))
31191600
>>> print(id(y))
31191648