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