[Python-Dev] keyword-only arguments and varags

Nick Coghlan ncoghlan at gmail.com
Sun Jun 5 07:58:09 CEST 2011


On Sun, Jun 5, 2011 at 11:45 AM, Benjamin Peterson <benjamin at python.org> wrote:
> Currently,
>
> def f(*, kw, **kwargs): pass
>
> is valid syntax, but
>
> def f(*args, *, kw): pass
>
> is not.
>
> I don't see any mention of it in the PEP but perhaps there is a good
> reason this isn't allowed. It seems to be perfectly well-defined to
> me.

Really? There's two single-stars there. One says "accept arbitrary
positional arguments and place them in a tuple named args", the second
says "don't accept any more positional args". You can't have it both
ways, so the compiler complains.

The following works fine to mix keyword-only arguments with arbitrary
positional arguments, so I don't see a problem:

def f(*args, kw): pass

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Python-Dev mailing list