Два полезных Python-инструмента для упрощения работы с кодом
Престон Бадир, Python-программист, поделился набором расширений, которые значительно упрощают и ускоряют кодинг. За 5 лет работы он перепробовал множество инструментов и выделил три наиболее полезных.

Любой разработчик использует те или иные вспомогательные инструменты. Какие-то из них позволяют ускорить процесс, какие-то — избавиться от ошибок, сделать код более понятным. Такие инструменты есть практически в любой сфере разработки.
Улучшаем код с Mypy
Python — динамически типизированный язык, что позволяет в любое время сделать любую переменную с любым типом данных. Одна и та же переменная может быть как строкой, так и целым числом или иным типом данных в зависимости от последнего присвоенного значения. Это ускоряет процесс написания кода, когда разработчику не нужно каждый раз вручную назначать тип данных для переменных:
# These two variable types are declared the exact same way
# Python figures out the data type on it's own, dynamically
# string
var_name = "string here"
# integer
var_name = 1234
А вот пример языка со статической типизацией, где каждой переменной задается конкретный тип данных, чего необходимо придерживаться в логике:
# Many languages require the data type to be declared too
# string
str var_name = "string here"
# integer
int var_name = 1234
В динамическом подходе есть и минусы:
- К концу процесса разработки повышается риск столкнуться с ошибками, так что придется переписывать какие-то части кода.
- Из-за постоянного вычисления типов код работает медленнее.
- Из-за динамической типизации код становится небезопасным, так как у функции на входе и выходе могут быть разные типы данных у одной и той же переменной.
- Читать динамический код сложнее, поскольку другой разработчик не может быть на 100% уверен в том, что объявленная ранее переменная не изменит тип.
Бесплатный инструмент Mypy внедряет статическую типизацию в код. Он позволяет находить ошибки несоответствия типов в коде. Если обнаружено несоответствие значение переменной присвоенному типу, выводится ошибка.
# Declaring a function using normal dynamic typing, without mypy
def iter_primes():
# code here
# Declaring the same function with mypy static typing
from typing import Iterator
def iter_primes() -> Iterator[int]:
# code here
Это самый простой пример из целого списка. Если вам нужно больше информации, переходите по ссылке. Кроме того, в документации Mypy есть обширный FAQ.
Быстрый поиск ошибок и написание простых функций с SonarLint
У большинства IDE есть линтеры, статические анализаторы ошибок. Линтер еще до запуска кода может найти ошибку. Это считается статистическим анализом кода.

Но есть еще и динамический анализ, который в фоновом режиме запускает/компилирует код, проверяя правильность его работы. И если что-то идет не так, сообщает о возможной ошибке. Как раз по такому принципу работает бесплатный проект SonarLint.

Закомментированный или неиспользуемый код
Каюсь, бывает, что я оставляю операторы вывода, закомментированный код и неиспользуемые функции по всей кодовой базе. SonarLint предупреждает об этих проблемах, показывая, где что находится. Без SonarLint поиск проблем и отладка может занять многие часы.
Проблемы с безопасностью
У SonarLint есть большая обновляемая база данных с перечнем уязвимостей, которая позволяет плагину вовремя предупреждать разработчика о найденных в коде проблемах.
Читаемость кода
SonarLint предупреждает о чрезмерном усложнении кода, объясняя суть проблемы. Это может быть, например, слишком большая вложенность операторов if.
В качестве вывода
Небольшое резюме, чтобы не забыть описанные в статье инструменты в:
- Сделайте код стабильным с Mypy Python Module.
- Находите ошибки быстрее и пишите читаемый код с SonarLint Editor Plugin.
А какие полезные инструменты для работы с Python используете вы?
Эта статья является переводом.
Оригинальный текст:
3 Insane Secret Weapons for Python by Preston Badeer.