[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: assignment, reference, += and parameter passing



justin wrote:

> a += b
> 
>   This is a bit funny.  Generally, if a refers to a mutable object such
>   as a list, this modifies the existing object that a refers to.  If a
>   refers to an immutable object such as an int, this rebinds a to
>   refer to a new object obtained by adding a and b.

Not really: if "a" refers to an object that defines an in-place add
method, it calls that method.  Otherwise, it uses the corresponding
binary operation (also a method).

Python itself doesn't distinguish between "mutable" and "immutable"
objects; behaviour is always defined by the objects themselves.

(in your example, the design mistake is probably to implement "+="
for lists to mean "extend".  guess someone got carried away...)

</F>