arguments to functions

Bengt Richter bokr at oz.net
Sun Jun 30 18:53:12 EDT 2002


On 30 Jun 2002 18:37:04 GMT, bokr at oz.net (Bengt Richter) wrote:
[...]
>You could get what I guess is the effect you want (keyword value takes priority) something like:
>
> >>> def test(_expected=None, *misc, **kwargs):
> ...     expected = kwargs.get('expected',None) or _expected
> ...     print 'expected:%s, misc:%s, kwargs:%s' % (`expected`,`misc`,`kwargs`)
> ...
Oops, not quite:
 >>> test(expected=0)
 expected:None, misc:(), kwargs:{'expected': 0}

Shortcut evaluation is dangerous ;-/

 >>> def test(_expected=None, *misc, **kwargs):
 ...     if kwargs.has_key('expected'):
 ...         expected = kwargs['expected']
 ...     else:
 ...         expected = _expected
 ...     print 'expected:%s, misc:%s, kwargs:%s' % (`expected`,`misc`,`kwargs`)
 ...
 >>> test(expected=0)
 expected:0, misc:(), kwargs:{'expected': 0}

Regards,
Bengt Richter



More information about the Python-list mailing list