[Python-Dev] PEP 8 updated on whether to break before or after a binary update
Guido van Rossum
guido at python.org
Fri Apr 15 12:53:13 EDT 2016
After a fruitful discussion on python-ideas I've decided that it's fine to
break lines *before* a binary operator. It looks better and Knuth
recommends it.
The head of the python-ideas discussion:
https://mail.python.org/pipermail/python-ideas/2016-April/039752.html
See also the discussion in the tracker: http://bugs.python.org/issue26763
Here's the diff I applied: https://hg.python.org/peps/rev/3857909d7956
The talk by Brandon Rhodes where Knuth is referenced ([3] below):
http://rhodesmill.org/brandon/slides/2012-11-pyconca/#laying-down-the-law
The key section in PEP 8 that was updated (apart from fixing up references):
Should a line break before or after a binary operator?
------------------------------------------------------
For decades the recommended style has been to break after binary
operators. However, recent reseach unearthed recommendations by
Donald Knuth to break *before* binary operators, in his writings about
typesetting [3]_. Therefore it is permissible to break before or
after a binary operator, as long as the convention is consistent
locally. For new code Knuth's style is suggested.
Some examples of code breaking before binary Boolean operators::
class Rectangle(Blob):
def __init__(self, width, height,
color='black', emphasis=None, highlight=0):
if (width == 0
and height == 0
and color == 'red'
and emphasis == 'strong'
or highlight > 100):
raise ValueError("sorry, you lose")
if (width == 0 and height == 0
and (color == 'red' or emphasis is None)):
raise ValueError("I don't think so -- values are %s, %s" %
(width, height))
Blob.__init__(self, width, height,
color, emphasis, highlight)
--
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20160415/84b8d98d/attachment.html>
More information about the Python-Dev
mailing list