Where's the documentation to support the following behavior...

Gary Herron gherron at islandtraining.com
Tue Mar 17 23:48:23 CET 2009


grocery_stocker wrote:
> Given the following....
>
> [cdalten at localhost ~]$ python
> Python 2.4.3 (#1, Oct  1 2006, 18:00:19)
> [GCC 4.1.1 20060928 (Red Hat 4.1.1-28)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>   
>>>> list = [7,8,9]
>>>> id(list)
>>>>         
> -1209401076
>   
>>>> id(list[0])
>>>>         
> 154303848
>   
>>>> id(list[1])
>>>>         
> 154303836
>   
>>>> id(list[2])
>>>>         
> 154303824
>   
>>>> for x in list:
>>>>         
> ...    print id(x),
> ...
> 154303848 154303836 154303824
>   
>>>> id(7)
>>>>         
> 154303848
>   
>>>> id(8)
>>>>         
> 154303836
>   
>>>> id(9)
>>>>         
> 154303824
>
>
> It seems like id(list[<some value>]) == id(<some value>). However, I
> can't find anything in the python documentation that talks about it.
> Did I perhaps overlook something?
>   

No you didn't overlook anything.  Here's the (full and complete) 
documentation for id.    Anything else you may notice about the values 
of id() are implementation details, and must not be depended upon.    
You may, however, be able to use what you've noticed to discern some 
things about the inner workings of Python, in particular how it stores 
multiple instances of immutable objects.    But be warned Python makes 
some fairly complex decisions here in the interest of efficiency.

*id*( 	object)

    Return the ``identity'' of an object. This is an integer (or long
    integer) which is guaranteed to be unique and constant for this
    object during its lifetime. Two objects with non-overlapping
    lifetimes may have the same id() value. (Implementation note: this
    is the address of the object.) 

Gary Herron


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




More information about the Python-list mailing list