[Python-Dev] PEP 3102: Keyword-only arguments
Edward Loper
edloper at gradient.cis.upenn.edu
Mon May 1 14:36:03 CEST 2006
Martin v. Löwis wrote:
> One reason I see is to have keyword-only functions, i.e. with no
> positional arguments at all:
>
> def make_person(*, name, age, phone, location):
> pass
>
> which also works for methods:
>
> def make_person(self, *, name, age, phone, location):
> pass
>
> In these cases, you don't *want* name, age to be passed in a positional
> way. How else would you formulate that if this syntax wasn't available?
But is it necessary to syntactically *enforce* that the arguments be
used as keywords? I.e., why not just document that the arguments should
be used as keyword arguments, and leave it at that. If users insist on
using them positionally, then their code will be less readable, and
might break if you decide to change the order of the parameters, but
we're all consenting adults. (And if you *do* believe that the
parameters should all be passed as keywords, then I don't see any reason
why you'd ever be motivated to change their order.)
-Edward
More information about the Python-Dev
mailing list