function with list argument defaulting to [] - what's going on here???

Steven D'Aprano steve at
Sun Apr 15 04:58:53 CEST 2007

On Sat, 14 Apr 2007 17:33:11 -0800, Troy Melhase wrote:

> On 4/14/07, Mike <mmoum at> wrote:
>> While trying to write a recursive function involving lists, I came
>> across some (to me) odd behavior which I don't quite understand. Here's
>> a trivial function showing the problem.
> from :
> Default parameter values are evaluated when the function definition is
> executed. This means that the expression is evaluated once, when the
> function is defined, and that that same ``pre-computed'' value is used
> for each call. This is especially important to understand when a
> default parameter is a mutable object, such as a list or a dictionary:
> if the function modifies the object (e.g. by appending an item to a
> list), the default value is in effect modified.

This comes up so often that I wonder whether Python should issue a warning
when it sees [] or {} as a default argument.

What do people think? A misuse or good use of warnings?


More information about the Python-list mailing list