Ответ
Mypy — это статический анализатор типов (static type checker) для Python. Его основная задача — находить ошибки, связанные с несоответствием типов, до запуска программы, привнося преимущества статической типизации в динамически типизированный язык.
Проблема, которую решает Mypy: В стандартном Python ошибки типов проявляются только во время выполнения (runtime), что может приводить к сбоям в работе приложения. Mypy позволяет выявить такие проблемы на этапе разработки или сборки.
Пример кода:
Сохраним следующий код в файл script.py.
# script.py
def greet(name: str) -> str:
return f"Hello, {name}"
# Ошибка: в функцию, ожидающую строку, передается число
greet(42)
Проверка с помощью Mypy: Запуск Mypy из командной строки немедленно обнаружит ошибку.
$ mypy script.py
script.py:6: error: Argument 1 to "greet" has incompatible type "int"; expected "str" [arg-type]
Found 1 error in 1 file (checked 1 source file)
Основные преимущества:
- Раннее обнаружение ошибок: Предотвращает баги, связанные с типами, до того, как код попадет в продакшн.
- Улучшение качества кода и рефакторинга: Аннотации типов делают код более читаемым и самодокументируемым. Рефакторинг становится безопаснее, так как Mypy проверит корректность изменений.
- Поддержка IDE: Современные редакторы кода (VS Code, PyCharm) используют Mypy для подсветки ошибок и улучшения автодополнения.