#python #pep8
#python #pep8
Вопрос:
Я не смог найти хороший способ обойти pep8 E502 и W504
У меня есть такой код
if (foo(a, b) or
foo1(c, d) or
foo2(e, f) ) and
foo3(g, h):
Если я напишу так, то получу жалобу на то, что я нарушаю «разрыв строки W504 после двоичного оператора«.
Однако, если я добавлю разрыв строки после двоичного оператора, я получу жалобу на то, что я нарушаю «E502 обратная косая черта избыточна между скобками»
Если я не смог объединить их в одну строку, как мне написать код?
Ответ №1:
Вы «должны» писать
if (foo(a, b)
or foo1(c, d)
or foo2(e, f)
and foo3(g, h)):
с двоичным оператором в начале следующей строки.
Даже PEP-8 немного колеблется в этом; он предлагает предоперационные перерывы для нового кода, но принимает постоперационные перерывы, если они согласованы во всем файле.
(Я предпочитаю постоперационные перерывы. Для меня это более убедительно говорит о том, что выражение продолжится на следующей строке. Таким образом, я бы просто использовал --ignore W504
.)
Комментарии:
1. это запускает W503 «разрыв строки перед двоичным оператором»
2. Это может зависеть от того, какой инструмент вы используете.
pycodestyle
по умолчанию не сообщает ни об одном из них (возможно, новое решение с тех пор, как я опубликовал этот ответ), потому что нет универсального консенсуса (даже в PEP-8), который является правильным.