Какие характеристики имеет система типов в Python?

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

Ответ

Python использует динамическую и сильную типизацию.

  1. Динамическая типизация (Dynamic Typing) Тип переменной определяется в момент выполнения (runtime), а не на этапе компиляции. Это позволяет присваивать одной и той же переменной значения разных типов.

    # Тип переменной определяется значением, которое ей присвоено
    data = 42      # data - это int
    print(type(data))
    
    data = "hello" # Теперь data - это str. Ошибки нет.
    print(type(data))
  2. Сильная типизация (Strong Typing) Операции между несовместимыми типами запрещены без явного преобразования. Это предотвращает неожиданное поведение и ошибки.

    # Попытка сложить строку и число вызовет ошибку
    # TypeError: can only concatenate str (not "int") to str
    result = "Your score is: " + 100 
    
    # Необходимо явное преобразование типа
    result_correct = "Your score is: " + str(100) # OK

С версии Python 3.5 также поддерживаются аннотации типов (type hints). Они не влияют на исполнение кода, но используются статическими анализаторами (например, Mypy) для поиска потенциальных ошибок на этапе разработки.

def greet(name: str) -> str:
    return f"Hello, {name}"