Default Argument Question

Chris Rebert clp at rebertia.com
Wed Oct 29 12:27:22 EDT 2008


On Wed, Oct 29, 2008 at 9:14 AM, Paulo J. Matos <pocm at ecs.soton.ac.uk> wrote:
> Hi all,
>
> Going through the tutorial brought up a question. Consider the functions:
>
> def f(a, L=[]):
>    L.append(a)
>    return L
>
> print f(3)
> print f(9)
> print f(7)
>
> def f1(i = 0):
>    i = i + 1
>    print i
>
> f1()
> f1()
> f1()
> f1()
>
> Since the f accumulates the values in L, I was expecting to see i
> printing 1,2,3,4 but this doesn't happen.
> Can someone please explain why and what is going on beneath the veil?

http://effbot.org/zone/default-values.htm explains this FAQ quite
well. Note that the "accumulation" behavior of lists is considered an
aberration and is usually not desired.

Cheers,
Chris
-- 
Follow the path of the Iguana...
http://rebertia.com

>
> Cheers,
>
> --
> Paulo Jorge Matos - pocmatos @ gmail.com
> --
> http://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list