[Python-3000] Cleaning up argument list parsing (was Re: More wishful thinking)

Jim Jewett jimjjewett at gmail.com
Tue Apr 18 23:52:47 CEST 2006


On 4/17/06, Talin <talin at acm.org> wrote:
> def func( first, second=default, third ):

> ... what's the point of supplying a default for the second
> parameter, but not the third?

You may be wrapping an external library. (Or at least a well-known API.)
I'll grant that the second argument probably ought to have been third,
but with an existing library, it often isn't. The real choices are
 def func(first, second, third):
 # Everyone supplies the junk second on every call
 def func(first, second=default, third=sentinel):
 if third is sentinel:
 raise ValueError("Need a real 'third' key")
 def func_newname(first, third):
none of which are very satisfying.
That said, I'm not sure the use case is common enough to justify the confusion.
-jJ


More information about the Python-3000 mailing list

AltStyle によって変換されたページ (->オリジナル) /