Something in the function tutorial confused me.
Alex Martelli
aleax at mac.com
Sat Aug 11 01:21:51 EDT 2007
Neil Cerutti <horpner at yahoo.com> wrote:
...
> The Python Language Reference seems a little confused about the
> terminology.
>
> 3.4.7 Emulating numeric types
> 6.3.1 Augmented assignment statements
>
> The former refers to "augmented arithmetic operations", which I
> think is a nice terminology, since assignment is not necessarily
> taking place. Then the latter muddies the waters.
Assignment *IS* "necessarily taking place"; if you try the augmented
assignment on something that DOESN'T support assignment, you'll get an
exception. Consider:
>>> tup=([],)
>>> tup[0] += ['zap']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
Tuples don't support item ASSIGNMENT, and += is an ASSIGNMENT, so tuples
don't allow a += on any of their items.
If you thought that += wasn't an assignment, this behavior and error
message would be very problematic; since the language reference ISN'T
confused and has things quite right, this behavior and error message are
perfectly consistent and clear.
Alex
More information about the Python-list
mailing list