Что такое MyPy и как он используется для статической типизации в Python?

Ответ

MyPy — это статический анализатор типов для Python. Он проверяет код на соответствие аннотациям типов (type hints) без его фактического выполнения, помогая выявлять ошибки, связанные с типами данных, на этапе разработки.

Как это работает:

  1. Разработчик добавляет аннотации типов к переменным, аргументам функций и возвращаемым значениям, используя стандартный синтаксис Python (PEP 484).
  2. MyPy анализирует код и сообщает о несоответствиях, например, когда в функцию, ожидающую строку, передается число.

Пример аннотации типов:

# Функция принимает строку и возвращает строку
def greet(name: str) -> str:
    return f"Hello, {name}"

# MyPy обнаружит здесь ошибку, так как 123 не является строкой
greet(123) 

# Эта переменная должна быть списком целых чисел
numbers: list[int] = [1, 2, 3]

Пример запуска проверки из командной строки:

# Установка
pip install mypy

# Запуск проверки для файла my_script.py
mypy my_script.py

Зачем использовать MyPy?

  • Обнаружение ошибок до запуска: Находит TypeError и другие проблемы на ранней стадии.
  • Улучшение читаемости кода: Типы служат самодокументацией.
  • Безопасный рефакторинг: IDE и редакторы кода используют типы для более точных подсказок и анализа кода.