理解python的内存模型

参见英文答案 Is a variable the name, the value, or the memory location? 4个请考虑以下日志: y = 20000 id(y)36638928 y = 1000000 id(y)36639264 正如您所...

参见英文答案 > Is a variable the name, the value, or the memory location?                                    4个
请考虑以下日志:

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

正如您所看到的,在更改y的值之后,它的ID也会更改.
这是否意味着int是不可变的?幕后发生了什么?

谢谢!

解决方法:

是的,整数是不可变的.你需要意识到的是:

>变量只是用于引用对象的名称.
> 20000和1000000是两个唯一的整数对象.这意味着它们永远不会同时共享相同的内存地址.

简单来说,当您执行此行时:

y = 20000

发生了两件事:

>在对象空间中创建整数对象20000.
>在名称空间中创建名称y并指向该对象.

当你执行这个时:

y = 1000000

还有两件事情发生了:

>在对象空间中创建新的整数对象1000000.
>名称y更改为指向该对象而不是20000.

本文标题为:理解python的内存模型

基础教程推荐