On Aug 23, 9:40 am, Carl Banks <[EMAIL PROTECTED]> wrote: > On Aug 23, 4:09 am, Steven D'Aprano <[EMAIL PROTECTED] > > > > cybersource.com.au> wrote: > > 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. > > 1. When you print spurious warnings, the overall effectiveness of the > warning system is diminished. People start to ignore them, either by > disabling them or by mentally tuning out. This in turn makes people > less likely to notice if a real warning is printed. > > Carl Banks
Question: what is real warning? -- http://mail.python.org/mailman/listinfo/python-list