On 6/26/2011 2:28 PM, Marc Aymerich wrote:
Hi,
I'm trying to define a function that has an optional parameter which
should be an empty list whenever it isn't given. However, it takes as
value the same value as the last time the function was executed. What
is the reason of this behaviour? How does python deal with default
values (i.e. when are they assigned/created)?
Our fine Language Reference. Compound Statements chapter, Function
definitions section, says in bold type: "Default parameter values are
evaluated when the function definition is executed. ". I presume the
tutorial says this somewhere too. Read both, along with the first 5
chanpter of the Library reference.
If you want code executed when you call the function, put it in the body
that is executed when you call the function
def f(lst = None):
if lst is None:
lst = []
...
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list