Maric Michaud wrote:
It is, please try to understand it, in python all expressions that mutate an object should return None,
You are over-generalizing. For builtin classes, mutation methods return none. Guido recommends this as a general practice, but users may do whatever they like in their own classes. In fact, people have been told that if they do not like the built-in behavior, they should make their own, possibly by subclassing.
For augmented assignment, in-place mutation followed by rebinding is explictly allowed and done for lists.
all expressions that return something, return a new object
Nonesense. There is nothing in the ref manual that says this and parts that say otherwise.
there are some noticeable exceptions :
They are only exceptions to your rule, not to the language specification. -- http://mail.python.org/mailman/listinfo/python-list