In [1]: a=1
In [2]: b=1
In [3]: id(a)
Out[3]: 8060008
In [4]: id(b)
Out[4]: 8060008
In [5]: a=1000
In [6]: b=1000
In [7]: id(a)
Out[7]: 19040896
In [8]: id(b)
Out[8]: 19040824
上面的例子可以看到a和b都为1时,他们对应的id是一样的,但是都为1000的时候为什么不一样了呢?这是因为小整数对象池起作用,[-5,257]之间的数字都是小整数对象池。python中为了减少系统资源占用,将常用的数字加入了小整数对象池,只要在这个池中的数字被不同变量使用只占用同一个文件id
In [9]: a="hello"
In [10]: b="hello"
In [11]: id(a)
Out[11]: 19650288
In [12]: id(b)
Out[12]: 19650288
In [13]: a="hello world"
In [14]: b="hello world"
In [15]: id(a)
Out[15]: 19537424
In [16]: id(b)
Out[16]: 19537664
字符串hello和hello world的id不同的原因是由于intern机制