首页 > 解决方案 > Python 的解释器在分配内存时会比较值吗?

问题描述

我刚刚观看了这个关于 Python 内存管理的内容丰富的视频。在其中,演示者使用了以下代码示例(大约在 4:15 标记处):

x = 300
y = 300

在这种情况下,我们有两个名称 (xy),每个都指向一个值 300。Python 是如何在执行该y = 300行时知道它不需要分配内存而是增加引用计数的,因为用于那个的内存价值已经被分配(通过x)?解释器是否比较每个实例的值?如果是这样,它如何跟踪它已经知道的值(我假设它会使用 a 这样做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

标签: pythonmemory-management

解决方案


推荐阅读