Train Bwister wrote:
Please explain: http://python.pastebin.com/m401cf94d
IMHO this behaviour is anything but the usual straight forward and
obvious way of Python.
Can you please point out the benefits of this behaviour?
http://docs.python.org/tutorial/controlflow.html#more-on-defining-functions
Note the section marked "Important warning" in bold. That single
dict-as-default-argument is evaluated once when the function is
defined, and shared between function-objects (the things created
by "def" statements).
The way to do it is:
def my_method(self, your_param, d=None):
if d is None:
d = {}
do_stuff(d)
There _are_ cases where it's a useful behavior, but they're rare,
so I don't advocate getting rid of it. But it is enough of a
beginner gotcha that it really should be in the Python FAQ at
www.python.org/doc/faq/general/
-tkc
--
http://mail.python.org/mailman/listinfo/python-list