考虑以下日志:
>>> y = 20000
>>> ID(Y)
36638928个
>>> y = 1000000
>>> ID(Y)
36639264
正如您所看到的,在更改y
的值后,它的ID也会发生变化
这是否意味着int
是不可变的?幕后发生了什么?
谢谢!
答案 0 :(得分:5)
是的,整数是不可变的。你需要意识到的是:
变量只是用于引用对象的名称。
20000
和1000000
是两个唯一整数对象。这意味着它们永远不会同时共享相同的内存地址。
简单来说,当你执行这一行时:
y = 20000
发生了两件事:
在对象空间中创建整数对象20000
。
在命名空间中创建名称y
并指向该对象。
执行此操作时:
y = 1000000
还会发生两件事:
在对象空间中创建一个新的整数对象1000000
。
名称y
更改为指向该对象而非20000
。