Когда я начал все больше и больше переходить к работе с Python, я оглядывался на мир JS и подумал, что у них так много хороших инструментов для форматирования и личинки! Я оказался в диком мире программирования Python, где PEP8 Устанавливает стандарты, но следите за ними или нет, и то, как вы пишете свой код, в значительной степени зависит от вас. Это мое письмо к себе назад, чтобы поделиться некоторыми советами, которые у меня теперь есть в моем наборе инструментов для поддержания хорошего и чистого проекта Python.
Форматирование
Если вы хотите ускорить кодирование и полагаться на компьютер, чтобы выполнить полировку для вас, вы можете использовать форматер кода для автоматического прохождения и форматирования вашего кода. В мире Python, Черный является одним из самых используемых форматеров. Это можно сравнить с Красиво В мире JS – они оба являются самоуверенными форматами, то есть они делают для вас выбор. (Вам не нужно больше бороться с своим коллегой за то, чтобы использовать ли одиночные или двойные цитаты! Большой!)
Вот как Black отвечает на файл с Печать ("Привет")
Анкет
$ pip install black $ black my-sample.py reformatted my-sample.py All done! ✨ 🍰 ✨ 1 file reformatted.
Лининг
Linting отличается от форматирования в том, что он не изменит код, на который он смотрит, но уведомит вас, если он не будет соблюдать указанные стандарты. Хороший вариант для сжигания в Python – Flake8 . Вот как Flake8 реагирует на то же содержимое файла, что и Black выше.
$ pip install flake8 $ flake8 my-sample.py my-sample.py:1:14: E202 whitespace before ')'
В дополнение к этому из коробки, есть множество Flake8 Extensions Это может помочь вам, например, переключение с .format ()
Для использования F-стенков или проверки вашего именования следует рекомендациям PEP8. Например, добавление Flake8 длины
Добавляет проверку длины линии к лининге.
$ pip install flake8-length $ flake8 test.py test.py:1:80: LN001 line is too long (169 > 79)
Если вам нравится сохранять свой импорт в такте, есть также правила для обеспечения конкретного порядка среди них. Один инструмент, который делает это Исорт . Изорт следует за заказом:
- абсолютный импорт
- Встроенные модули
- Сторонние библиотеки
- Импорт из того же проекта вы также можете интегрировать Isort в Flake8, используя Flake8-Asort плагин!
Проверка типа
Поддержка аннотаций типа была введена в Python 3.5, и есть инструменты для наблюдения за тем, чтобы набрать типирование в такте. Хорошим вариантом для проверки аннотаций вашего типа является использование mypy Анкет Учитывая образец файла, который выглядит так:
def return_hello(name: str) -> int: return f'Hello, {name}!'
Мы можем запустить Mypy и увидеть, что наши намеки на наш тип действительно отключены:
$ pip install mypy $ mypy my-sample.py my-sample.py:2: error: Incompatible return value type (got "str", expected "int") Found 1 error in 1 file (checked 1 source file)
Некоторые другие хорошие альтернативы для проверки типов – Пирайт (который наблюдается в VSCODE через плагин Microsofts Pylance) и Pyre Анкет
Подключить это
Вы могли бы время от времени запускать эти инструменты в своем проекте, но у вас будет лучшее время, если вы сделаете их частью своей процедуры запроса на привлечение. Используя действия GitHub, вы можете настроить, например, Flake8 Action . В качестве альтернативы вы можете создать действие с нуля – здесь мы запускаем Isort с опцией только для проверки:
name: Check import order on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Set up Python 3.9 uses: actions/setup-python@v1 with: python-version: 3.9 - name: Install isort run: | python -m pip install --upgrade pip pip install isort - name: Check import order run: isort . -c -v
Последние мысли
Мне нравятся правила, поэтому, когда систематически может объединить свою кодовую базу, используя такие инструменты, просто делает мой день. Однако я также знаю много разработчиков, которые не чувствуют, что такая строгость является их джем – всегда следует обсуждать в команде, как и почему мы хотим установить стандарты кодовой базы.
Надеюсь, этот текст дал вам все идеи о том, какие инструменты есть и что вы могли бы выбрать в свой собственный инструментарий! Если вы знаете полезный инструмент, который я не упомянул – пожалуйста, дайте мне знать в комментариях! 😊
Оригинал: “https://dev.to/magdapoppins/write-better-python-with-some-help-5g1l”