Python bug with [] as default value in functions?
Duncan Booth
duncan at rcp.co.uk
Thu Apr 12 08:53:48 EDT 2001
[posted and mailed]
Dinu Gherman <gherman at darwin.in-berlin.de> wrote in
<3AD5989D.E22E2CBF at darwin.in-berlin.de>:
> I noticed a very strange behaviour: I've got a recursive func-
> tion like this:
>
> foo(spam, eggs=[]):
> ...
> return foo(spam, eggs=eggs)
> # the following is the same:
> # return foo(spam, eggs)
>
> where the default argument for eggs, the empty list, is *empty*
> for the top-level call *only* when it is explicitly provided
> with the function call like this:
>
> bar = foo(mySpam, eggs=[])
>
This is documented behaviour. See the FAQ at
http://www.python.org/doc/FAQ.html#6.25 for a description.
In general if you want a mutable object to be used as a default argument
(and the function needs to modify the object), use None instead and create
the object inside the function.
More information about the Python-list
mailing list