On Mon, 10 Aug 2009 08:46:17 -0700, Cornelius Keller wrote: > On 10 Aug., 17:12, "Diez B. Roggisch" <de...@nospam.web.de> wrote: >> Cornelius Keller wrote: > [snip] >> >> http://effbot.org/zone/default-values.htm >> >> Diez > > Ok thank you. > I' understand now why. > I still think this is very confusing, because default values don't > behave like most people would expect without reading the docs.
Really? How do you expect the default value to behave in this example? >>> import time >>> def test(x=time.time()): ... print x ... >>> >>> test() 1249972984.33 >>> time.sleep(30) >>> test() 1249972984.33 You get the same default object each time you call the function, NOT a fresh one created. I'm sure I'd be terribly confused if Python re- evaluated the default value each time I called the function. There's no difference between this and the case x=[], except that lists are mutable and floats aren't. You get the same default list each time, it just has different stuff in it. The alternative would be to get a different list each time, and that would require re-evaluating the default each time the function was called, which is horrible. -- Steven -- http://mail.python.org/mailman/listinfo/python-list