Terry Reedy wrote:
Hendrik van Rooyen wrote:
"S Arrowsmith" <si...intbox.UUCP> wrote:

"Small" integers get a similar treatment:

a = 256
b = 256
a is b
True
a = 257
b = 257
a is b
False

This is weird - I would have thought that the limit
of "small" would be at 255 - the biggest number to fit in a byte. 256 takes two bytes, so it must be

Ints take as least 4 bytes. It is commonness of usage that determined caching. The range was expanded a few years ago in anticipation of the new bytes type, whose contents are ints, not chars.

an arbitrary limit - could have been set at 300,
or 30 000...

'Small' also goes to -10 or so. 256 was included, at minuscule cost, because it is a relatively common number, being the number of bytes.

In fact, 3.0.1 starts with 36 internal references to the cached int 256!

>>> import sys
>>> sys.getrefcount(256)
38 # -2 for the function call

>>> sys.getrefcount(257)
2

>>> [sys.getrefcount(i)-2 for i in range(258)]

shows that only 15 cached ints start with more references. 0 has the most with 724 (and that small actually goes to -5).

tjr

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to