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

Reply via email to