Hi,
I cannot see any strange behavior. this code works exacly as you and I suspect:
>>> def otherfunction(x) : ... return x ... >>> def function(arg=otherfunction(5)) : ... return arg ... >>> function(3) 3 >>> function() 5
Or is this not what you excepted?
- harold -
On 21.12.2004, at 15:47, [EMAIL PROTECTED] wrote:
def function(arg=otherfunction(value)): return arg
My expectation would have been that otherfunction(value) would be called if (and only if) the arg keyword parameter was missing from the function() call (ie. the optional value is evaluated the lazy way). Also, otherfunction would be called each and every time this function() is called without the arg keyword. (At least, I would have assumed this before today)
Still, I can see why it's been implemented the way it has, it just seems a shame there isn't a neat shortcut to default lots of optional arguments to new mutable objects. And since I'm not the only one to fall into this trap it makes me wonder why the default behaviour isn't made to be what most people seem to expect?
-- http://mail.python.org/mailman/listinfo/python-list
-- Freunde, nur Mut, Lächelt und sprecht: Die Menschen sind gut -- Bloß die Leute sind schlecht. -- Erich Kästner
-- http://mail.python.org/mailman/listinfo/python-list