Lists And Extra Commas at end

Avi Gross avigross at verizon.net
Tue Dec 24 18:48:48 EST 2019


Cameron,

I am not at all against the feature. I like it as my programming style is
like you describe. One entry per line indented at the same level, in
multiple languages. I often do graphics where I generate an image then
fine-tune additional parameters to get the effect I want. Some functions
take literally hundreds of options to adjust anything from text labels to
line types to colors and the high/low values on axes and so on. In languages
like R, I tend to put in a final entry with no trailing comma that is
something harmless that can be left in position and the same for the first
entry. Then my adding/deleting/editing of fields happens in the middle where
I always have a terminal comma.

My point is the convenience comes with a price for people who make a mistake
and are not told perhaps the dangling comma was a placeholder for something
to add that they forgot or ...

Again, the convenience is in some sense removing a mathematical symmetry,
but so what?

-----Original Message-----
From: Cameron Simpson <cs at cskk.id.au> 
Sent: Tuesday, December 24, 2019 5:12 PM
To: Avi Gross <avigross at verizon.net>
Cc: python-list at python.org
Subject: Re: Lists And Extra Commas at end

On 24Dec2019 16:48, Avi Gross <avigross at verizon.net> wrote:
>Let me switch gears to the terminal comma situation. Unlike many 
>languages, Python decided a dangling comma is perfectly allowable in 
>many situations, perhaps all.
>
>>>> a=[1,2,3,]
>>>> a
>[1, 2, 3]
[...]
>And, of course, you can use the same dangling comma in making a tuple, 
>dictionary or set and who knows where else.
>So, is that a feature you want warnings about? After all, a dangling 
>comma may simply mean you left something out and meant to add later?

To my mind the killer argument for trailing commas is things like multiline
lists, dicts or parameters. Example:

  def function(
      arg1=None,
      arg2=FOO,
  ):

Imagine this for a comewhat extended set of parameters. Or similar for a big
list or dict (eg a "table" as part of a class definition).

By always including the trailing comma it is easier to insert or delete
lines, and it reduces diff noise if you're using revision control (no commas
flickering on and off in the diff output).

Cheers,
Cameron Simpson <cs at cskk.id.au>



More information about the Python-list mailing list