id( ) function question

Mel mwilson at
Thu Oct 15 04:13:35 CEST 2009

Chris Rebert wrote:
> Although I have no idea how it is that `id({}) == id({})` as a prior
> posted showed; FWIW, I can't manage to reproduce that outcome.

Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> id({})== id({})

It's believable if id({}) does the following:

1. Construct an empty dict
2. Take the id of the dict
3. Reduce the reference-count on the now-unneeded dict.

It's not too hard for the second empty dict to get allocated in the same 
memory that the first one (now dereferenced and deallocated) used, so 
CPython gives it the same id value.

When the == comparison happens, all it needs are the two ints returned from 
the id calls.


More information about the Python-list mailing list