While trying to write a recursive function involving lists, I came 
across some (to me) odd behavior which I don't quite understand. Here's 
a trivial function showing the problem.

 >>> def f(l, r = []):
        for itm in l:
                r.append(itm)
        print r

        
 >>> a = [1,2,3]
 >>> f(a)
[1, 2, 3]
 >>> f(a)
[1, 2, 3, 1, 2, 3]
 >>> f(a)
[1, 2, 3, 1, 2, 3, 1, 2, 3]

I know the function is quite artificial, but it's for illustration only. 
Why is "r" not being reset to the empty list on subsequent calls? It 
seems like it should be reinitialized when not explicitly provided.

Thanks in advance.
Mike
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to