On Jul 16, 1:09 pm, Jeff <[EMAIL PROTECTED]> wrote: > On Jul 15, 7:21 pm, Michael Torrie <[EMAIL PROTECTED]> wrote: > > > iu2 wrote: > > > I still don't understand: In each recursive call to flatten, acc > > > should be bound to a new [], shouldn't it? Why does the binding happen > > > only on the first call to flatten? > > > Nope. In each new call it's (re)bound to the same original list, which > > you've added to as your function continues--it's mutable. Default > > variables that are bound to mutable objects are one of the big caveats > > that is mentioned in the FAQ. > > Is this avoidable by using a call to list() in the definition instead?
No. Probably what you'd want to do, is something like this: def func(arg1, arg2=None): if arg2 is None: arg2 = list() ... So you create a list at runtime if arg2 has its default value. -- http://mail.python.org/mailman/listinfo/python-list