Modifying the default argument of function

mu-- at melix.net
Tue Jan 21 14:11:02 EST 2014


Hi everybody,

A friend of mine asked me a question about the following code:

[code]
def f(x=[2,3]):
     x.append(1)
     return x

print(f())
print(f())
print(f())
[/code]

The results are [2, 3, 1], [2, 3, 1, 1] and [2, 3, 1, 1, 1].

The function acts as if there were a global variable x, but the call of 
x results in an error (undefined variable). I don't understand why the 
successive calls of f() don't return the same value: indeed, I thought 
that [2,3] was the default argument of the function f, thus I expected 
the three calls of f() to be exactly equivalent.

I'm don't know much about python, does anybody have a simple explanation 
please?

-- 
Mû

---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com




More information about the Python-list mailing list