[Python-Dev] A grammatical oddity: trailing commas in argument lists -- continuation
zuo at chopin.edu.pl
Mon Dec 13 12:44:49 CET 2010
Dear Python Developers,
It is s my first post to python-dev, so let me introduce myself briefly:
Jan Kaliszewski, programmer and composer, sometimes also NGO activist.
Coming to the matter... The discussion started with remark by Mark
Dickinson about such a syntax oddity:
> def f(a, b,): ... is fine, but
> def f(*, a, b,): ... is a SyntaxError
Then some other similar oddities were pointed at (*args/**kwargs-related
ones as well as calls like f(*, a=3,) causing SyntaxError too).
But yesterday both mentioned issues has been closed as rejected -- with
suggestion that it would probably require a PEP to modify Python in this
aspect (as there is no clear consensus). So I'd opt for re-opening the
discussion -- I suppose that more people could be interested in solving
the issue (at least after the end of PEP 3003 moratorium period).
I think that seeing that:
def f(a, b): ...
def f(a, b,): ...
def f(a, *, b): ...
def f(a, *args, b): ...
x(1, 2, 3, 4, z=5)
x(1, 2, 3, 4, z=5,)
x(1, *(2,3,4), z=5)
...are ok, then --
def f(a, *, b,): ...
def f(a, *args, b,): ...
x(1, *(2,3,4), z=5,): ...
...should be ok as well, and consequently --
def f(a, *args,): ...
def f(a, **kwargs,): ...
...should also be ok.
Please also note that Py3k's function annotations make one-def-argument-
-per-line formattig style the most suitable in some cases, e.g.:
spam:"Very tasty and nutritious piece of food",
ham:"For experts only",
*more_spam:"Not less tasty and not less nutritious!",
spammish_inquisition:"Nobody expects this!",
) -> "Spam, spam, spam, spam, spam, spam, spam, spam, spam, spam":
More information about the Python-Dev