copy on write
Jean-Michel Pichavant
jeanmichel at sequans.com
Fri Jan 13 07:07:05 EST 2012
Eduardo Suarez-Santana wrote:
> El 13/01/12 11:33, Eduardo Suarez-Santana escribió:
>> I wonder whether this is normal behaviour.
>>
> Even simpler:
>
> $ python
> Python 2.7.2 (default, Oct 31 2011, 11:54:55)
> [GCC 4.5.3] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> r={'a':1};
> >>> d={};
> >>> d['x']=r;
> >>> d['y']=r;
> >>> d['x']['a']=3
> >>> d['y']
> {'a': 3}
> >>>
>
yes it is.
>>> d['x']=r;
>>> d['y']=r;
means that both d['x'] and d['y'] name the same object r. If you change
r, you'll see these changes wheter using d['x'] or d['y'].
The operator '=' does not copy objects, it binds an object to a name,
and an object can have multiple names.
Use the dictionary copy method to copy a dictionary:
d['x'] = r.copy()
JM
More information about the Python-list
mailing list