id( ) function question
Tim Chase
python.list at tim.thechases.com
Wed Oct 14 07:21:55 EDT 2009
> But if I chose as a value another number (a big one, let say 1e10) I
> get what I will expect also in the case of the chose of the integer 10
> showed above:
>>>> a=1e10
>>>> d=1e10
>>>> d is a
> False
>>>> id(a)
> 11388984
>>>> id(d)
> 11388920
CPython has the option to cache frequently used items, and does
so for a small range of ints. It's not guaranteed behavior (or a
guaranteed range) so you shouldn't rely on it, but it's an
efficiency thing. In my current version, it looks like it's ints
from -5 to 256. YMMV
In general, if you're using "is" (and not comparing with None) or
id(), you're doing it wrong unless you already know the
peculiarities of Python's identity implementations.
-tkc
More information about the Python-list
mailing list