On Mon, 18 Aug 2008 03:20:11 -0700, Jasper wrote: > It doesn't help that the solution to get the expected behavior involves > adding boiler-plate code all over.
Expected by who? Please don't assume that everyone has had their intuition shaped by exposure to the same languages yours has been shaped by. What surprises you is obvious to me. In a previous post, you asserted that the alternative behaviour (having default arguments re-evaluated each time the function is called) can't possibly be surprising. You wrote: "And no, the alternative /does not/ have an equivalent set of surprises -- it's not like Python is unique in having default arguments." That's simply not true. I would find this behaviour very surprising, and I bet you would too: >>> x = "parrot" >>> def foo(obj=x): ... print obj ... >>> foo() # this is the current behaviour parrot >>> x = "shrubbery" >>> foo() # but this is not shrubbery >>> del x >>> foo() # nor is this Traceback (most recent call last): ... NameError: name 'x' is not defined -- Steven -- http://mail.python.org/mailman/listinfo/python-list