了解python的内存模型
问题内容:
这个问题已经在这里有了答案 :
变量是名称,值还是存储位置? (4个答案)
6年前关闭。
考虑以下日志:
y = 20000
id(y)
36638928
y = 1000000
id(y)
36639264
如您所见,更改的值后y
,其ID也将更改。
这是否意味着int
一成不变?幕后发生了什么?
谢谢!
问题答案:
是的,整数是不可变的。您需要意识到的是:
-
变量只是您用来引用对象的名称。
-
20000
和1000000
是两个 唯一的 整数对象。这意味着它们将永远不会同时共享相同的内存地址。
简单来说,执行此行时:
y = 20000
发生两件事:
-
20000
在对象空间中创建一个整数对象。 -
在名称
y
空间中创建一个名称,并指向该对象。
执行此操作时:
y = 1000000
还有两件事发生:
-
1000000
在对象空间中创建一个新的整数对象。 -
名称
y
更改为指向该对象,而不是20000
。