Hi Thanks all for your answers. I figured your solution already, but now I understand where the behavior is from. One question remains: can I find my parameter 'l' somewhere? I looked in a lot of objects, but couldn't find it.
Thanks Bart. [EMAIL PROTECTED] wrote: > On Aug 22, 11:13 am, Bart van Deenen > <[EMAIL PROTECTED]> wrote: >> >> # function >> def X(l=[]): >> l.append(1) >> print l >> >> # first call of X >> X() >> [1] >> >> #second call of X >> X() >> [1, 1] >> >> Where does the list parameter 'l' live between the two successive calls >> of X(). Why is it not recreated with an empty list? >> Is this correct behavior or is it a Python bug? >> Does anyone have any pointers to the language documentation where this >> behavior is described? >> > "Default parameter values are evaluated when the function definition > is executed." > > Depending on your use the common way to handle this is to do > > def x(lst = None): > if lst is None: > pass # lst has not been set to anything > else: > pass # lst has been set to something -- http://mail.python.org/mailman/listinfo/python-list