I found two similar questions in the mailing list, but I didn't understand
the explanations.

I ran this code on Ubuntu 10.04 with Python 2.6.5.

Why do the functions g and gggg behave differently? If calls gggg(3) and
g(3) both exit their functions in the same state, why do they not enter in
the same state when I call gggg(4) and g(4)?



# ---------------------------------------------------------------------- my
code:
def gggg(a, L=[]):
    print "enter function"
    print "a = ", a, "and L = ", L
    if L == []:
        print "hey, L is empty"
        L = []
    L.append(a)
    print "after append, L = ", L
    return L

def g(a, L=[]):
    print "enter function"
    print "a = ", a, "and L = ", L
    if L == []:
        print "hey, L is empty"
    L.append(a)
    print "after append, L = ", L
    return L

print gggg(3)
print gggg(4)
print gggg(7)
print g(3)
print g(4)
print g(7)



# ---------------------------------------------------------------------- my
output:
-------------------gggg calls
enter function
a =  3 and L =  []
hey, L is empty
after append, L =  [3]
[3]
enter function
a =  4 and L =  []
hey, L is empty
after append, L =  [4]
[4]
enter function
a =  7 and L =  []
hey, L is empty
after append, L =  [7]
[7]
-------------------g calls
enter function
a =  3 and L =  []
hey, L is empty
after append, L =  [3]
[3]
enter function
a =  4 and L =  [3]
after append, L =  [3, 4]
[3, 4]
enter function
a =  7 and L =  [3, 4]
after append, L =  [3, 4, 7]
[3, 4, 7]
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to