Clarify my preferences around trailing commas (#211)

This commit is contained in:
Guido van Rossum 2017-02-13 21:50:40 -08:00 committed by GitHub
parent ea042afc5b
commit c78ccb3dcb
1 changed files with 46 additions and 0 deletions

View File

@ -466,6 +466,11 @@ Avoid extraneous whitespace in the following situations:
Yes: spam(ham[1], {eggs: 2}) Yes: spam(ham[1], {eggs: 2})
No: spam( ham[ 1 ], { eggs: 2 } ) No: spam( ham[ 1 ], { eggs: 2 } )
- Between a trailing comma and a following close parentheses. ::
Yes: foo = (0,)
No: bar = (0, )
- Immediately before a comma, semicolon, or colon:: - Immediately before a comma, semicolon, or colon::
Yes: if x == 4: print x, y; x, y = y, x Yes: if x == 4: print x, y; x, y = y, x
@ -637,6 +642,47 @@ Other Recommendations
if foo == 'blah': one(); two(); three() if foo == 'blah': one(); two(); three()
When to use trailing commas
===========================
Trailing commas are usually optional, except they are mandatory when
making a tuple of one element (and in Python 2 they have semantics for
the ``print`` statement). For clarity, it is recommended to surround
the latter in (technically redundant) parentheses.
Yes::
FILES = ('setup.cfg',)
OK, but confusing::
FILES = 'setup.cfg',
When trailing commas are redundant, they are often helpful when a
version control system is used, when a list of values, arguments or
imported items is expected to be extended over time. The pattern is
to put each value (etc.) on a line by itself, always adding a trailing
comma, and add the close parenthesis/bracket/brace on the next line.
However it does not make sense to have a trailing comma on the same
line as the closing delimiter (except in the above case of singleton
tuples).
Yes::
FILES = [
'setup.cfg',
'tox.ini',
]
initialize(FILES,
error=True,
)
No::
FILES = ['setup.cfg', 'tox.ini',]
initialize(FILES, error=True,)
Comments Comments
======== ========