Время прочтения: 4 мин.

Недавно я готовил доклад на тему “ Autopep8” и подчерпнул для себя много полезной информации. Немного подумав, решил поделиться ею с вами.

В среде разработчиков на Python все знают, что PEP8 является главным документом по стандарту кодирования на языке Python. Этот документ рассказывает о том, как правильно писать код на Python. Основная мысль следующая: код читается большое количество раз, в отличие от того, когда он пишется. Соответственно, правила о стиле написания кода нужны для того, чтобы улучшить качество читаемости кода и сделать этот код максимально понятным и согласованным между всеми разработчиками, которые с этим кодом работают. Поэтому, весь код необходимо писать в одном стиле, чтобы любой разработчик мог с ним работать без каких либо затруднений. Autopep8 — это инструмент, который анализирует код Python и, используя документ PEP8, определяет, что нужно исправить в вашем коде. Autopep8 автоматически исправляет большинство ошибок и неточностей в коде, обнаруженных посредством PEP8.

Исходя из технической документации, autopep8 исправляет следующие ошибки, о которых сообщает pycodestyle, например:

— серия ошибок E100 – исправление визуальных отступов.

— серия ошибок E200 – прибавление отсутствующих пробелов или удаление лишних.

— серия ошибок E300 – исправления, связанные с отсутствием или присутствием лишних пустых строк.

— серия ошибок E400 – исправления, связанные с импортом модулей.

— серия ошибок W290 – удаление лишних завершающих пробелов в последней строке и добавление пустой завершающей строки, в случае ее отсутствия.

Для установки Autopep8 необходимо в терминале выполнить команду:

 $ pip install autopep8 После установки открываю Pycharm, создаю новый файл Python, называю его, к примеру, main.py. Далее необходимо добавить в файл, рандомный код, который представлен на картинке ниже:

Этот код выглядят небрежно, элементы словаря расписаны в несколько строчек, смещены отступы в строчках словаря, в некоторых местах элементы словаря склеились, проставлены лишние пробелы после словаря, скобка, закрывающая словарь опущена на строчку ниже. В объявлении функции summa склеились аргументы, а в самой функции склеились элементы возвращаемой суммы. Импорт модулей расположен в конце написанного кода, и в целом по коду присутствуют разрывы и склеивания в виде присутствия большого количества пробелов или их отсутствия. Теперь необходимо воспользоваться  модулем Autopep8. В терминале, находясь в директории с файлом проекта, ввожу следующую команду:

 $ autopep8 --in-place --aggressive main.py

Получаю код следующего вида:

Теперь код выглядит более лаконичным  и красивым. Все склейки устранены, отступы соблюдены, импорты модулей перенесены в начало кода. Но все равно структура кода еще не идеальна – элементы словаря не упорядочены по одному в каждой строке, закрывающая скобка словаря находится, через строку, ниже. Применяю усиливающее свойство нашей команды. В терминале, при вводе команды, дублирую «—aggressive»:

 $ autopep8 --in-place --aggressive --aggressive main.py

Получаю код следующего вида:

Теперь код выглядит практически идеально =)

Снова возвращаюсь к начальному неисправленному коду.

Чтобы включить только часть исправлений, нужно использовать параметр – select. Например, чтобы исправить различные типы проблем с отступами, ввожу команду:

 $ autopep8 --select=E1 --in-place --aggressive main.py

Получаю следующий вид кода:

В итоге autopep8 исправил отступы внутри словаря.

Выполнить команду без написания ее в консоли немного проблематично, но в Pycharm это можно настроить, процесс настройки выглядит следующим образом:

1: File --->  Settings  --->  Tools  --->   External Tools

После открытия можно увидеть знак + в верхнем левом углу формы, щелкнув на него, можно добавить новый инструмент. Ввожу данные ниже в соответствующие окна:

После завершения вышеуказанной конфигурации нажимаю OK, чтобы сохранить. Теперь я имею быстрый доступ к инструменту autopep8, достаточно выполнить следующие действия:

Tools  —> External Tools —> pep8. И просто щелкнуть мышью.

Теперь, что хочется сказать в заключении… Инструмент Autopep8 прост в установке, гибок в использовании и автоматически приводит ваш код к стандарту PEP8. А какие линтеры, автоформатеры знаете Вы? =) Делитесь в комментариях.