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

Reply via email to