Ответ
Для поддержания единого стиля кода в Python, повышения его читаемости, упрощения ревью и снижения количества ошибок используются следующие категории инструментов:
-
Форматтеры – автоматически изменяют код в соответствии с заданными правилами стиля:
- Black – бескомпромиссный форматтер, автоматически приводит код к стандарту PEP 8, не оставляя выбора (например, всегда двойные кавычки, фиксированная длина строки). Это обеспечивает максимальную консистентность.
- autopep8 – исправляет код, чтобы он соответствовал PEP 8, но с возможностью настройки.
- yapf – форматтер от Google, позволяет настраивать стиль через конфигурационные файлы.
-
Линтеры – анализируют код на предмет потенциальных ошибок, нарушений стиля и подозрительных конструкций:
- flake8 – объединяет проверку на соответствие PEP 8,
pyflakes(поиск неиспользуемых импортов/переменных) иmccabe(проверка цикломатической сложности). - Pylint – более строгий и всеобъемлющий линтер, проверяет не только стиль, но и качество кода, потенциальные баги, дублирование и сложность.
- flake8 – объединяет проверку на соответствие PEP 8,
-
Инструменты для импортов – автоматически сортируют и организуют импорты:
- isort – сортирует импорты в соответствии с PEP 8 и другими настраиваемыми правилами, группируя их по типам (стандартные библиотеки, сторонние, локальные).
Пример использования Black:
# До форматирования
def foo( a, b ):
return a+b
# После Black
def foo(a, b):
return a + b
Как использовать (пример):
- Установите инструменты:
pip install black flake8 isort - Запустите из корневой директории проекта:
black .,flake8 .,isort .
Эти инструменты рекомендуется интегрировать в CI/CD пайплайны или использовать как pre-commit хуки для автоматического контроля качества кода.
Ответ 18+ 🔞
Ну, слушай, вот есть такая хуйня — чтобы твой код на Python не выглядел как пиздец, написанный в три часа ночи после пятой рюмки, умные люди придумали целую кучу инструментов. Это, блядь, не просто так — читаемость повышается, ревью упрощается, и ошибок становится в овердохуища раз меньше. Короче, вот что у нас есть:
1. Форматтеры (или "убей в себе гоблина-разработчика")
Эти ребята автоматом перепишут твой код по правилам. Ты как будто отдаёшь его в химчистку, а получаешь обратно в упаковке.
- Black — это, сука, самый бескомпромиссный ублюдок. Он не спрашивает, он делает. Хочешь двойные кавычки? Получи двойные кавычки. Длина строки 88 символов? Будет 88, блядь. Выбора нет, зато везде один стиль — красота.
- autopep8 — помягче. Он тоже за PEP 8, но с ним можно немного пошаманить в настройках.
- yapf (от Google) — а этот вообще позволяет настраивать стиль через конфиги. Хочешь, чтобы отступы были табами, а не пробелами? Пожалуйста, но будь готов, что коллеги тебя возненавидят.
2. Линтеры (или "старший брат, который следит за тобой")
Они не меняют код, а только тычут в него пальцем и орут: "Э, сабака, сука! Тут у тебя неиспользуемая переменная валяется! А тут, блядь, сложность функции зашкаливает!"
- flake8 — классика. Объединяет три штуки: проверку по PEP 8, поиск хуйни вроде неиспользованных импортов (
pyflakes) и замер сложности кода (mccabe). - Pylint — это уже не старший брат, а ебаный надзиратель из тюрьмы. Суровый, придирчивый, проверяет всё: стиль, качество, баги, дублирование. Может выдать тебе оценку 2.34/10 и убить всю самооценку. Но код после него — чистота, блядь.
3. Для импортов (чтобы не было бардака в начале файла)
- isort — он берёт твои импорты, которые ты накидал как попало, и раскладывает их по полочкам: сначала стандартные библиотеки, потом сторонние, потом свои. Красиво, аккуратно, по PEP 8.
Вот, смотри, как Black работает, просто пиздец:
# Было (пьяная версия)
def foo( a, b ):
return a+b
# Стало (версия после Black и трёх чашек кофе)
def foo(a, b):
return a + b
Как этим всем пользоваться, чтобы не быть распиздяем?
- Поставь их, блядь:
pip install black flake8 isort - Запусти из корня проекта:
black .— переформатирует всё.flake8 .— наорет на все ошибки.isort .— приберётся в импортах.
Самый кайф — запихнуть это всё в CI/CD или сделать pre-commit хуки. Тогда ты просто не сможешь закоммитить говнокод, система тебя не пустит. Гениально и просто, ёпта!