id( ) function question

raffaele ponzini raffaele.ponzini at gmail.com
Wed Oct 14 12:49:30 CEST 2009


Dear all,
I have a question concerning the output of the id() function.
In particular since is should:
""
Return the identity of an object.  This is guaranteed to be unique among
simultaneously existing objects.  (Hint: it's the object's memory address.)
""
i expect that for two differnt objects it returns two differnt adress in memory.

Let's seee a correct case:
>>> a=10
>>> b=20
>>> a is b
False
>>> id(a)
9986060
>>> id(b)
9985940
>>> c=a
>>> c is a
True
>>> id(c)
9986060
>>> id(a)
9986060

And now a strange (for me) output:
>>> d=10
#here i'm assingning a integer value to a fresh new variable d without
any kind of
#link to the variable a

>>> d is a
True
>>> d==a
True
>>> id(a)
9986060
>>> id(d)
9986060

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
>>>

can you please explain me the reasion of this strange behaviour.
Thanks,
--
-- 
lele



More information about the Python-list mailing list