Thanks to all who answered. On Friday 22 September 2006 17:28, Marc 'BlackJack' Rintsch wrote: > Christoph Haas wrote: > > TestModule.py > > ---------------------------------------- > > globalvar = 0 > > > > def def1(): > > print globalvar > > > > def def2(foo=globalvar): > > print foo > > ---------------------------------------- > > > > Running the test.py script prints "123" and "0". So accessing the > > globalvar in def1() works. But if I try to use the global variable as > > a default parameter in def2() it uses the default "0". What is the > > difference between these two? Are there contexts of default > > parameters? > > Default parameters are evaluated *once* when the ``def`` is executed. > So in `def2` the value of `foo` won't be looked up when calling the > function as it is already bound to the value 0.
Now that you point me to it it's pretty obvious indeed. I always forget that the 'def's are executed at load time, too. Peter/John: in fact I already used a sentinel like you proposed as a "workaround". So there is just one sensible way to do it. Again. Kindly Christoph -- http://mail.python.org/mailman/listinfo/python-list