On Fri, 21 Nov 2008 13:25:45 -0800, Brentt wrote: > I can't figure out why when I define a function, a variable > (specifically a list) that I define and initialize in the argument > definitions, will not initialize itself every time its called.
Because you haven't told the function to initialize the value every time it's called. You are laboring under a misapprehension. Function default values are created ONCE, when you define the function. > So for > example, when making a simple list of a counting sequence from num (a > range list), if I call the function multiple times, it appends the > elements to the list generated the times it was called before, even > though the variable for the list is initialized in the argument > definitions. No it isn't. You need to re-set your thinking, that's not what Python does. Try this: def expensive(): # simulate an expensive function call import time time.sleep(30) return time.time() def parrot(x=expensive()): return x The expensive call is made once only. If you want it made every time, you have to explicitly make that call every time: def parrot(x=None): if x is None: x = expensive() return x For bonus marks, predict the behaviour of this: def spam(): def ham(x=expensive()): return x return ham() -- Steven -- http://mail.python.org/mailman/listinfo/python-list