Какие существуют инструменты для статической проверки типов в Python?

«Какие существуют инструменты для статической проверки типов в Python?» — вопрос из категории Python, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для статической проверки типов в Python (type checking) используются специализированные анализаторы кода. Они помогают находить ошибки, связанные с типами, до запуска программы.

Основные инструменты:

  1. Mypy — де-факто стандарт для статической типизации в Python. Он наиболее популярен и имеет широкую поддержку.

    # Установка
    pip install mypy
    
    # Запуск проверки
    mypy your_script.py
  2. Pyright — разработан Microsoft, известен своей высокой скоростью. Является основой для языкового сервера Pylance в VS Code, обеспечивая проверку типов «на лету».

    # Установка
    pip install pyright
    
    # Запуск проверки
    pyright your_script.py
  3. Pyre — разработан Meta (Facebook), ориентирован на производительность и масштабируемость в больших проектах.

    # Установка
    pip install pyre-check
    
    # Инициализация и запуск
    pyre init
    pyre check

Важное различие:

  • Статическая проверка (Mypy, Pyright) анализирует исходный код без его выполнения.
  • Валидация в рантайме (например, с помощью Pydantic) проверяет типы данных во время выполнения программы, что критически важно для обработки внешних данных (например, из API-запросов).

Модуль typing сам по себе не выполняет проверок, а лишь предоставляет синтаксис для аннотаций типов, который затем используют анализаторы.