copy on write

Thomas Rachel nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915 at spamschutz.glglgl.de
Thu Feb 2 05:42:01 EST 2012


Am 13.01.2012 13:30 schrieb Chris Angelico:

> It seems there's a distinct difference between a+=b (in-place
> addition/concatenation) and a=a+b (always rebinding),

There is indeed.

a = a + b is a = a.__add__(b), while

a += b is a = a.__iadd__(b).

__add__() is supposed to leave the original object intact and return a 
new one, while __iadd__() is free to modify (preference, to be done if 
possible) or return a new one.

A immutable object can only return a new one, and its __iadd__() 
behaviour is the same as __add__().

A mutable object, however, is free to and supposed to modify itself and 
then return self.


Thomas



More information about the Python-list mailing list