Python seems to have a so called "small number cache" for numbers in the range -5 to 256. We can demonstrate that with the following program:
for i in range(-7, 258):
if id(i) == id(i + 0):
print(i, "is cached")
else:
print(i, "is not cached")
The output is
-7 is not cached
-6 is not cached
-5 is cached
-4 is cached
[...]
255 is cached
256 is cached
257 is not cached
I wonder whether that's defined in the Python specification or it's an implementation detail.