Каждый питонщик знаком с PEP8, гидом “Style Guide for Python Code.” Это замечательный документ, и если ему следовать, то ваш код стилистически будет согласоваться с кодом, написанным другими разработчиками. Соблюдение последовательности – огромная победа, потому что это упрощает жизнь при взаимодействии с вашим кодом.
Как вы помните, основные рекомендации PEP8:
- Используйте 4 пробела в качестве отступа.
- Отделяйте функции верхнего класса и определения функций двумя пустыми строками.
- Используйте пробелы вокруг арифметических операций.
- Импорт должен быть, как правило, на отдельных строках.
- Ограничивайте все строки максимум 79 символами.
Но как запомнить все из них? Введите в поиске: pep8.
pep8: проверка стиля для кода Питон
Сценарий pep8 просто проверяет код, сравнивая с регламентом PEP 8 и предупреждает вас о несоответствиях. Вы можете установить его, используя команду pip install pep8.
Давайте посмотрим на один пример. Проверим код:
Это просто, и это работает, но стиль все неправильный!
- Два импорта, Os и SYS, на одной и той же линии.
- Обозначена только одна пустая строка между определениями функций.
- Пропущены пробелы вокруг моего + и * операторов.
Проверим этот же код через pep8:
Мало того, что pep8 нашел эти ошибки, но можно также использовать опцию –show-pep8, чтобы цитировать PEP 8 для каждой трансгрессии!
Но как насчет других проблем, как например, то что в коде находится бесполезный import? Тут на помощь приходит PyFlakes.
pyflakes: проверка кода на ошибки для Питона
Модуль pyflakes читает код и предупреждает об общих источниках ошибок. Его также можно установить, используя pip install pyflakes.
Pyflakes ловит такие ошибки, как:
- Неиспользованные импорт и переменные.
- Скрытые или затертые имена.
- Переопределенные функции.
Замечательно!
Но что, если мы заботимся о стиле и источниках ошибок?
flake8: pep8 + pyflakes + многое другое
Тарек Зиаде написал модуль Flake8, который объедил pep8 и pyflakes в одном удобном автономном пакете. pep8 или pyflakes уже помещены в Flake8, их не нужно устанавливать отдельно. Flake8 устанавливается при помощи pip install flake8.
В flake8 добавлены:
- Способ освобождения файлов или строк из проверяемого списка.
- Опциональная проверка цикломатической сложности.
(Цикломатическая сложность является мерой “сложности” кода, полученная в первую очередь от его степени вложенности и ветвления. Если её слишком много в какой-либо одной функции, то, вероятно, код будет трудно читаем и поддерживаем)
Вот результат проверки при помощи falake8:
Специальный бонус: Syntastic: Проверка синтаксиса для Vim
Если вы используете Vim и вам приходятся по вкусу идеи, лежащие в основе flake8, вам стоит установить плагин Syntastic. При сохранении файла, Syntastic запускает его через проверку ошибок и предупреждает вас о возможных проблемах. Для Python он по умолчанию использует Flake8.
Посмотрите, что происходит, если мы попытаемся сохранить сценарий mymath.py, показанный выше:
Ошибочные линии выделены подчеркиванием, и также выдан Location List с перечислением всех ошибок. Здорово, не правда ли?
Занимательно еще то, что Syntastic способен проверить синтаксические ошибки для множества различных языков, например, C, CoffeeScript, Go, Haskell, JavaScript, Puppet, Vala, и многие другие.