[Python-3000] Pronouncement on parameter lists
Jim Jewett
jimjjewett at gmail.com
Fri Apr 21 20:14:30 CEST 2006
On 4/21/06, Alex Martelli <aleaxit at gmail.com> wrote:
> On 4/21/06, Guido van Rossum <guido at python.org> wrote:
> > To prevent more abominations like this, let me pronounce that I now
> > like the single-star syntax:
> > def foo(a, b, *, x=1, y=2): ...
> So, what will this syntax signify? If the single-star stands for
> "arbitrary positional arguments", how will the body of foo access
> them? Sorry if these have been well covered already, but I read back
> through this thread and couldn't find them.
No, *args stands for arbitrary positional arguments.
The unadorned * stands for "anything after this must be passed as a keyword".
It has not yet been specified what would happen to additional
positional arguments that get passed in anyway. (Swallow or raise an
Exception?)
It has not yet been specified whether the keyword-only arguments must
each have a default. Most proposals assume not, but then do ugly
things to support that assumption. The above suggests
def foo(a, b=2, *, x=3, y=4): # OK
def foo(a, b=2, *, x, y=4): # not yet decided
-jJ
More information about the Python-3000
mailing list