#python #pycharm #refactoring #indentation #pep8
Вопрос:
Когда я получу предупреждение
PEP 8: E122 continuation line missing indentation or outdented
Ctrl Alt L не выполняет необходимые отступы. Вместо этого отступ должен быть сделан вручную.
Как будто этого было недостаточно, если я сделаю Ctrl Alt Lэто позже, строка не будет привязана к предыдущему неверному уровню, что снова вызовет вышеупомянутое предупреждение. Каково решение этой досадной неприятности?
Как и было предложено, вот пример:
def foo():
return range(15)
var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14,
var15 = foo()
Editor -> Code Style -> Markdown
Настройки:
Hard wrap = 80
Wrap on typing = Yes
.
Комментарии:
1. Я думаю, что было бы гораздо лучше, если бы вы включили также пример. PyCharm не всегда использует лучшее форматирование (и иногда оно непоследовательно). OTOH PEP8 тоже не без проблем, и иногда просто лучше писать код по-другому
Ответ №1:
PyCharm имеет некоторые встроенные функции, которые автоматически исправляют отступы в строке продолжения, но не для конкретного случая, показанного в вопросе.
Показанный код-Python, поэтому соответствующие настройки находятся на File
>
Settings
>
Editor
>
Code Style
>
Python
>
Wrapping and Braces
.
Если вы посмотрите на скриншот, нужная вам функциональность работает для доступных опций, которые называются Wrap if long
(используются вместе с Hard wrap at
ограничением). Если вы попытаетесь сделать то же самое для любой из конструкций, у которых есть предыдущая опция (например, импорт), отступ строки продолжения будет автоматически исправлен нажатием Ctrl Alt L. Однако ваш пример предназначен для нескольких объявлений атрибутов в одной строке с распаковкой, для которой нет возможности.
Это оставляет пользователям 3 распространенных альтернативы:
- Используйте Python Black для форматирования кода.
- В этом случае выполните форматирование вручную.
- Не обращайте внимания на руководство по стилю PEP 8 и отключите предупреждение линтера.
Но, в заключение, это не связано с тем, что вы делаете что-то не так, и где-то нет скрытой настройки, которая позволила бы это сделать. В среде IDE просто нет функции форматирования для этой конкретной конструкции.
Вы также можете отправить запрос на функцию в JetBrains bugtracker.