python小整数对象池的is和==的区别的问题

看到这样的话:“大家自己试试看a=257,b=257时它们的id还是否会相等。事实上Python 为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。而Python 对小整数的定义是 [-5, 257),只有数字在-5到256之间它们的id才会相等,超过了这个范围就不行了,同样的道理,字符串对象也有一个类似的缓冲池,超过区间范围内自然不会相等了。”
当时是复习is和==的区别的时候查找到的推文里面说的,自己打了代码试了一下,发现不是话里所说的,求解答

######a

=257
b=257
print(id(a),id(b))

说的是没有错的,小整数对象池就是这样的。

a=257
b=257
print(id(a),id(b))

运行结果

2599128439120 2599128439120

当你将b设置成跟a一样的常量值时,不管这个值是多大,一开始都会直接将b指向a的地址
而当你将b进行加减乘除运算后,如果是小整数,只要a和b的值相同,那么地址依然一样
而如果不是小整数,地址就会不一样了
你不修改它,它当然一样
此外,看好你学的到底是python2还是python3,语法和设置都有很大不同

你上面数说的是pyton2的版本,小整数的定义是 [-5, 257),只有数字在-5到256之间它们的id才会相等,
但是在python3中已经做了优化,当a和b都等于同一个数时(最大值是2的8次方,最小值是-2的6次方),id也是相同的