[Python-ideas] Proposal to change List Sequence Repetition (*) so it is not useless for Mutable Objects

Joseph Martinot-Lagarde contrebasse at gmail.com
Tue May 31 09:36:31 EDT 2016


> I can only agree here. Even today, despite knowing the fact, it's 
> causing some headaches in some cases.

How about raising an exception if mutable objects are in the list ? It's a
pretty big backward incompatible change, but:

Pros:
- it "works" in the general case
- it avoids hidden bugs
- it avoids a transition period between new and old behavior
- it is possible to propose using a list comprehension instead in the
exception message

Cons:
- backward incompatible (but changing the behavior of * is backward
incompatible anyway)
- maybe there are useful use cases of duplicating the reference ?


Note that the same arguments could be taken for mutable default arguments,
but an actual use case is to create a cache variable.

Joseph



More information about the Python-ideas mailing list