PEP 8 рекомендует использовать круглые скобки, чтобы вам не нужно было \
, и осторожно предлагает разрывать перед бинарными операторами, а не после них. Таким образом, предпочтительный способ форматирования кода выглядит следующим образом:
my_var = (somethinglikethis
.where(we=do_things)
.where(we=domore)
.where(we=everdomore))
Два соответствующих отрывка — это один из Максимальная длина строки а> раздел:
Предпочтительным способом переноса длинных строк является использование подразумеваемого Python продолжения строки внутри круглых и фигурных скобок. Длинные строки можно разбивать на несколько строк, заключая выражения в круглые скобки. Их следует использовать вместо использования обратной косой черты для продолжения строки.
... и весь Следует ли разрывать строку до или после бинарного оператора? section:
Должна ли строка разрываться до или после бинарного оператора?
В течение десятилетий рекомендуемым стилем было прерывание после бинарных операторов. Но это может ухудшить читабельность двумя способами: операторы, как правило, разбросаны по разным столбцам на экране, и каждый оператор перемещается от своего операнда на предыдущую строку. Здесь глаз должен проделать дополнительную работу, чтобы определить, какие элементы добавляются, а какие вычитаются:
# No: operators sit far away from their operands
income = (gross_wages +
taxable_interest +
(dividends - qualified_dividends) -
ira_deduction -
student_loan_interest)
Чтобы решить эту проблему удобочитаемости, математики и их издатели следуют противоположному соглашению. Дональд Кнут объясняет традиционное правило в своей серии статей Компьютеры и набор текста: «Хотя формулы внутри абзаца всегда прерываются после бинарных операций и отношений, отображаемые формулы всегда прерываются перед бинарными операциями».
Следование традиции из математики обычно приводит к более читабельному коду:
# Yes: easy to match operators with operands
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
В коде Python допустимо прерывание до или после бинарного оператора, если соглашение локально согласовано. Для нового кода предлагается стиль Кнута.
Обратите внимание, что, как указано в приведенной выше цитате, PEP 8 используется, чтобы дать противоположный совет о том, где прерывать оператор, приведенный ниже для потомков:
Предпочтительным способом переноса длинных строк является использование подразумеваемого Python продолжения строки внутри круглых и фигурных скобок. Длинные строки можно разбивать на несколько строк, заключая выражения в круглые скобки. Их следует использовать вместо использования обратной косой черты для продолжения строки. Не забудьте сделать отступ в продолжении строки соответствующим образом. Предпочтительное место для обхода бинарного оператора — после оператора, а не перед ним. Несколько примеров:
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)
person
Bastien Léonard
schedule
30.10.2011