Should Python raise a warning for mutable default arguments?

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Fri Aug 22 10:42:43 EDT 2008


Sometimes it seems that barely a day goes by without some newbie, or not-
so-newbie, getting confused by the behaviour of functions with mutable 
default arguments. No sooner does one thread finally, and painfully, fade 
away than another one starts up.

I suggest that Python should raise warnings.RuntimeWarning (or similar?) 
when a function is defined with a default argument consisting of a list, 
dict or set. (This is not meant as an exhaustive list of all possible 
mutable types, but as the most common ones that I expect will trip up 
newbies.) The warning should refer to the relevant FAQ or section in the 
docs.

What do people think?


-- 
Steven



More information about the Python-list mailing list