On Fri, 22 Aug 2008 20:37:09 -0700, Carl Banks wrote: > On Aug 22, 10:42 am, Steven D'Aprano <[EMAIL PROTECTED] > cybersource.com.au> wrote: >> 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? > > -1 > > There's nothing questionable about using a mutable default argument, as > long as you don't mutate it.
There's nothing questionable about using a mutable default argument, so long as you know what behaviour to expect. I too use that behaviour, I like that behaviour, and I'm tired of people who want it "fixed". Nevertheless, it is surprising to many people. My aim is to make it a little less surprising. > Python shouldn't raise a warning just > because something *might* be due to a misunderstanding. That's one opinion. As I've eluded to in an early post, I don't believe Python should refuse to perform an operation just because it might be slow. Nevertheless, that's precisely what the sum() function does. I'm suggesting a warning rather than an exception, but other than that, I suggest that there's precedence to what I am suggesting. -- Steven -- http://mail.python.org/mailman/listinfo/python-list