我做了以下事情:
>>> a=10
>>> id(a)
31817408L
>>>
>>> id(10)
31817408L
因此,我们可以看到id(a)等于id(10)
现在,我做
>>>a='what is this'
>>> id(a)
35412416L
>>>
>>>
>>>
>>> id('what is this')
31951968L
为什么在这种情况下id(a)不等于id('这是什么')? 幕后实际发生了什么?
答案 0 :(得分:2)
不同的ID意味着内存中的地址不同,所以你的两个“这个”字符串实际上是两个字符串,即使它们存储相同的值。另一方面,Python优化了常用的整数,以便所有出现的内容都指向同一个对象。幸运的是,该对象是不可变的,所以你不能说10 = 9。如果你选择一个不经常使用的整数,你可以看到发生了什么:
>>> a=555555
>>> id(a)
44506456L
>>> id(555555)
44506528L