Bart van Deenen a écrit :
(ot : please don't top post - corrected)
[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."

(snip)
> 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.

def foo(x="default value for x"):
    pass

print foo.func_defaults
=> ('default value for x',)


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to