Using dicts and lists as default arguments of functions

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Mon Aug 9 17:34:23 CEST 2010


Johan a écrit :
> Dear all,
> 
> Considering this test program:
> 
> def tst(a={}):

Stop here, we already know what will follow !-)

And yes, it's one of Python's most (in)famous gotchas : default 
arguments values are computed only once, at function definition time 
(that is, when the def statement is executed).

The correct way to write a function with mutable default arguments is:

def func(arg=None):
    if arg is None:
        arg = []
    # then proceed

HTH



More information about the Python-list mailing list