Требует ли PEP 8 пробелов вокруг операторов в аргументах функции?
у меня есть этот код:
some_list = range(a, b+1)
после проверки моего стиля кодирования с плагин pep8 для vim, я получил это предупреждение:
missing whitespace around operator
кажется, что для соответствия с PEP 8 я должен вместо этого написать это?
some_list = range(a, b + 1)
но я читал руководство по стилю PEP 8 для кода Python несколько раз и просто не могу найти правило в случае выше предупреждение.
поэтому я хочу знать: при использовании стиля PEP-8 необходимы пробелы вокруг операторов (+, -,*,/и т. д.) в аргументах функции?
2 ответов
http://www.python.org/dev/peps/pep-0008/#other-recommendations
всегда окружайте эти двоичные операторы одним пространством с обеих сторон: назначение ( = ), дополненное назначение ( + = , - = и т. д.), сравнения (==, , !=, , =, in, not in, is, is not), логические значения (and, or, not).
исключение из этого, когда =
используется для задания именованных параметров.
Edit:
Я посмотрел исходный код стандартной библиотеки Python и нашел вхождение сценария, представленного выше:
http://hg.python.org/cpython/file/9ddc63c039ba/Lib/json/decoder.py#l203
end = _w(s, end + 1).end()
ваш плагин Vim был неправильным, когда вы спросили в 2013 году... но в 2010 году, когда он был создан. PEP 8 имеет менялось несколько раз, и ответ на ваш вопрос изменился.
первоначально PEP 8 содержал фразу:
используйте пробелы вокруг арифметических операторов
под это правила
range(a, b+1)
однозначно неправильно и должно быть написано как
range(a, b + 1)
это правило, что pycodestyle (Линтер Python, ранее известный как pep8.py, что спрашивающий плагин Vim использует под капотом) реализуется в течение нескольких лет.
, это был изменен в апреле 2012 года. Прямолинейный язык, не оставлявший места для благоразумия, был заменен более грубым советом:--27-->в конце концов исправлено, но не очень хорошо, и примеры остаются запутанными, по-видимому, подразумевают гораздо более строгое и менее субъективное правило, чем проза.если используются операторы с различными приоритетами, попробуйте добавить пробелы вокруг операторов с самым низким приоритетом(Ях). Используйте свое собственное суждение; однако никогда не используйте более одного пробела и всегда имейте одинаковое количество пробелов с обеих сторон двоичного оператора.
по-прежнему существует правило, требующее пробелов вокруг отдельных операторов:
всегда окружайте эти бинарные операторы одним пробелом с каждой стороны: назначение (
=
), дополненной назначением (+=
,-=
etc.), сравнения (==
,<
,>
,!=
,<>
,<=
,>=
,in
,not in
,is
,is not
), Логические значения (and
,or
,not
).
но обратите внимание, что это правило явно о том, к каким операторам оно относится, и арифметические операторы, такие как +
are не в списке.
таким образом, ОПТОСОЗ, в его нынешнем виде,не диктуйте, следует ли использовать пробелы вокруг +
оператор (или другие арифметические операторы, такие как *
и /
и **
). Вы свободны "использовать свой собственный суд".
кстати, пикодистайл Линтер изменил свое поведение в конце 2012 года, чтобы отразить изменения в Пеп, разделяя правила об использовании пробелов вокруг операторов на два кода ошибок, E225 (для отказа использовать пробелы вокруг операторов, которые PEP 8 все еще требует пробелы вокруг), который включен по умолчанию, и E226 (для отказа использовать пробелы вокруг арифметических операторов), который игнорируется по умолчанию. Этот вопрос asker здесь, должно быть, использовал немного устаревшую версию линтера, когда он задал этот вопрос в 2013 году, учитывая ошибку, которую он видел.