New submission from Géry <gery.o...@gmail.com>: I have just read PEP 7 and noticed that its line-breaking recommandation in presence of binary operations seems to contradict its analogue in PEP 8 which follows Knuth's rule.
PEP 7 (https://www.python.org/dev/peps/pep-0007/#code-lay-out): > When you break a long expression at a binary operator, the operator > goes at the end of the previous line, and braces should be formatted > as shown. E.g.: > > if (type->tp_dictoffset != 0 && base->tp_dictoffset == 0 && > type->tp_dictoffset == b_size && > (size_t)t_size == b_size + sizeof(PyObject *)) > { > return 0; /* "Forgive" adding a __dict__ only */ > } PEP 8 (https://www.python.org/dev/peps/pep-0008/#should-a-line-break-before-or-after-a-binary-operator): > To solve this readability problem, mathematicians and their > publishers follow the opposite convention. Donald Knuth explains the > traditional rule in his Computers and Typesetting series: "Although > formulas within a paragraph always break after binary operations and > relations, displayed formulas always break before binary operations" > [3]. > > Following the tradition from mathematics usually results in more > readable code: > > # Yes: easy to match operators with operands > income = (gross_wages > + taxable_interest > + (dividends - qualified_dividends) > - ira_deduction > - student_loan_interest) > In Python code, 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. ---------- assignee: docs@python components: Documentation messages: 349361 nosy: docs@python, maggyero priority: normal severity: normal status: open title: PEP 7 line-breaking with binary operations contradicts Knuth's rule type: enhancement versions: Python 3.7 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue37813> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com