References and copying

bruno at modulix onurb at xiludom.gro
Fri Jun 9 12:07:14 EDT 2006


danmcleran at yahoo.com wrote:
>>Where can I find a good explanation when does an interpreter copy the
>>value, and when does it create the reference.
> 
> Any good Python book. I have Learning Python and Programming Python 2nd
> edition and they are very good IMO.
> 
> 
>>I thought I understand
>>it, but I have just typed in following commands:
>>
>>
>>>>>a=[[1,2],[3,4]]
>>>>>b=a[1]
>>>>>b=[5,6]
>>>>>a
>>
>>[[1, 2], [3, 4]]
>>
>>>>>b
>>
>>[5, 6]
>>
>>And I don't understand it.  I thought, that b will be a reference to a,
>>so changing b should change a as well.
> 
> 
> No, you've set the name b to reference a slice of a. Slicing a list
> always returns a new list.

Please verify before asserting:

>>> a = [[1, 2], [3, 4]]
>>> b = a[1]
>>> b is a[1]
True
>>> id(b)
46912496915448
>>> id(a[1])
46912496915448
>>>



-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"



More information about the Python-list mailing list