对于py解释器的优化问题.
py在对值为-5到256之间的对象进行了不可描述的处理.
让我们来看看如何.
>>> a = 32165165
>>> b = 65165165
>>> id(a),id(b)
(2122778497712, 2122776349616)
>>> a is b
False
恩, 看上去没什么问题.
当a和b的值相等时会发什么,在-5~256之间.
>>> a = 1
>>> b = 1
>>> a is b
True
>>> id(a), id(b)
(1553231328, 1553231328)
再来一个.
>>> a = 257
>>> b = 257
>>> a is b
False
>>> id(a), id(b)
(2122782382032, 2122782382096)
py会在对象值超出-5~256这个范围时才会把实际的多个对象当成多个对象.所以a,b的ID值不同.
还有个坑.
>>> a,b = 257,257
>>> a is b
True
>>> id(a), id(b)
(2122778497712, 2122778497712)