[Python-Dev] A grammatical oddity: trailing commas in argument lists -- continuation

R. David Murray rdmurray at bitdance.com
Mon Dec 13 16:51:19 CET 2010


On Mon, 13 Dec 2010 23:25:58 +1000, Nick Coghlan <ncoghlan at gmail.com> wrote:
> On Mon, Dec 13, 2010 at 9:44 PM, Jan Kaliszewski <zuo at chopin.edu.pl> wrote:
> > I think that seeing that:
> >
> > =A0 =A0def f(a, b): ...
> > =A0 =A0def f(a, *, b): ...
> > =A0 =A0def f(a, *args, b): ...
> > =A0 =A0x(1, 2, 3, 4, z=3D5)
> > =A0 =A0x(1, *(2,3,4), z=3D5)
> 
> As per the closure of the affected tickets, the likely outcome of such
> a discussion would be the deprecation and subsequent removal of
> support for the following two options:
> 
>     def f(a, b,): ...
>     x(1, 2, 3, 4, z=3D5,): ...
> 
> Function arguments are not lists. Even when separated onto multiple
> lines, the closing "):" should remain on the final line with other
> content.
> 
> That would be a lot of hassle to get rid of something that people
> probably aren't doing in the first place, though.

Counter examples from google code search:
    
    http://www.google.com/codesearch/p?hl=en#copo3dCwf5E/django/utils/simplejson/encoder.py&q=^\s*\):&sa=N&cd=5&ct=rc
        (also appears in json in the stdlib)
    http://www.google.com/codesearch/p?hl=en#algXCqBNNP0/vendor/python-clientform/ClientForm.py&q=^\ *\):&sa=N&cd=3&ct=rc
        (class def)
    http://www.google.com/codesearch/p?hl=en#KT-ZlRkUunU/trunk/code/output/ExprParser.py&q=def\(.*,\s\):&sa=N&cd=2&ct=rc
    http://www.google.com/codesearch/p?hl=en#XnG7n8Mjf2s/GoogleSearch.py&q=def\(.*,\s\):&sa=N&cd=3&ct=rc
    http://www.google.com/codesearch/p?hl=en#MokQ50OeeyU/src/python/ndogen/parser/matlab/parser.py&q=def\(.*,\s\):&sa=N&cd=5&ct=rc

Not many, granted, but not zero, either, and I'm sure there are lots
more out there[*].  I do especially like the fact that there is one in the
stdlib :)

It seems like the status quo is fine.  I wouldn't object to it being
made more consistent.  I would object to removing the existing cases.

--
R. David Murray                                      www.bitdance.com

[*] code search's response to various regexes was somewhat surprising;
expressions I thought should have been supersets resulted in fewer
hits.  Nor could I think of a way to search for function invocations
ending with a comma.  Then again, I usually make lots of mistakes
with regexes.


More information about the Python-Dev mailing list