理解python的内存模型

参见英文答案 > 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.