Что такое проверка типов в Python и как она работает

Ответ

Проверка типов (type checking) — это процесс анализа кода с целью убедиться, что типы данных, используемые в операциях, совместимы друг с другом. В Python существует два подхода:

  1. Динамическая типизация (по умолчанию) Проверка типов происходит во время выполнения кода. Если операция недопустима (например, сложение числа и строки), интерпретатор вызовет исключение TypeError.

    # Этот код выполнится, но упадет с ошибкой TypeError
    def add(a, b):
        return a + b
    
    add(5, "text") # Ошибка возникнет только в момент вызова
  2. Статическая типизация (опционально) Проверка выполняется до запуска программы с помощью специальных инструментов (линтеров), таких как mypy. Для этого используется синтаксис аннотаций типов (type hints), введенный в PEP 484.

    Пример со статической проверкой:

    # mypy обнаружит ошибку до запуска этого кода
    def greet(name: str) -> str:
        return f"Hello, {name}"
    
    greet("Alice")  # OK
    greet(42)       # Ошибка: Argument 1 to "greet" has incompatible type "int"; expected "str"

Ключевые преимущества статической проверки:

  • Раннее обнаружение ошибок: Проблемы с типами выявляются на этапе разработки, а не у пользователя.
  • Улучшение читаемости: Аннотации служат документацией, делая код понятнее.
  • Помощь IDE: Редакторы кода используют аннотации для более точного автодополнения и анализа.