分配内存时,Python的解释器会比较值吗?

时间:2018-10-14 01:21:30

标签: python memory-management

我刚刚看过informative video的Python内存管理。演示者在其中使用了以下代码示例(大约4:15标记):

x = 300
y = 300

在这种情况下,我们有两个名称(xy),每个名称指向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

0 个答案:

没有答案