Python是动态类型语言,变量可以随时改变类型,取决于指向的对象类型。像int、float、str这些属于不可变对象,内容变了,只能在新地址上重建内容,所以地址一定会变;而list、set、dict之类的属于可变对象,容器内容的增删改,不影响其地址。举例如下:
>>> a = 1
>>> id(a)
8634072
>>> a = a + 1
>>> id(a)
8634096 #不可变对象,内容变了地址也会变
>>> b = [1, 2, 3]
>>> id(b)
45921800
>>> b[0] = 0
>>> id(b)
45921800 #可变对象,内容变了地址不变