Terry Reedy a écrit :
Curt Hagenlocher wrote:
1. Preventing the "noob" mistake of saying "def f(x = {})" and expecting that a new empty dictionary will be produced for each call, and
As a couple of us have suggested, this, like similar jobs, should be handled by program checkers. I leave it to someone else to see if existing programs already check and warn and, if not, suggest this to their authors.
Indeed, Pylint does handle this in some way : "W0102: *Dangerous default value %s as argument* Used when a mutable value as list or dictionary is detected in a default value for an argument." Some have talked about thunks or other concepts here ; I too feel that this issue could be the occasion of introducing new features, that exceed the scope of default arguments. Could you peopel develop a little what you think about with "thunk" or "early action" ? Is the former different from an argument-less lambda function ? Else, concerning the syntax for "dynamic" default arguments, I guesse somethng like : def func(a, b @= []): pass would be OK, wouldn't it ? Regards, Pascal