[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


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

More information about the Python-Dev mailing list