Что такое Mypy и какую проблему он решает в Python

Ответ

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 для подсветки ошибок и улучшения автодополнения.