Default parameters

Rainer Deyke rainerd at
Sun Dec 21 03:13:47 CET 2003

Carl Banks wrote:
> Well, ok.  I don't agree that it's dangerous, and there are certainly
> useful functions that modify their arguments that could benefit from a
> fresh copy.
>     def top_secret_code(a,b,c,stub=[]):
>         stub.extend([f(a,b),g(b,c),g(c,a)])
>         return stub

This is exactly the kind of function I would call inconsistent.  Called with
three arguments, it creates and returns a new list.  Called with four, it
modifies an existing list and returns a reference to it.  I find this highly
counterintuitive.  If I was a user of this function and I learned about the
three argument form first, I would expect the four argument form to leave
its fourth argument unmodified and return a new list.

Rainer Deyke - rainerd at -

More information about the Python-list mailing list