小编典典

了解python的内存模型

python

考虑以下日志:

y = 20000
id(y)
36638928
y = 1000000
id(y)
36639264

如您所见,更改的值后y,其ID也将更改。
这是否意味着int一成不变?幕后发生了什么?

谢谢!


阅读 134

收藏
2021-01-20

共1个答案

小编典典

是的,整数是不可变的。您需要意识到的是:

  1. 变量只是您用来引用对象的名称。

  2. 200001000000是两个 唯一的 整数对象。这意味着它们将永远不会同时共享相同的内存地址。

简单来说,执行此行时:

y = 20000

发生两件事:

  1. 20000在对象空间中创建一个整数对象。

  2. 在名称y空间中创建一个名称,并指向该对象。

执行此操作时:

y = 1000000

还有两件事发生:

  1. 1000000在对象空间中创建一个新的整数对象。

  2. 名称y更改为指向该对象,而不是20000

2021-01-20