Ответ
Это две независимые характеристики языка программирования, которые часто путают. Python является языком с динамической, но при этом строгой типизацией.
-
Динамическая типизация (Dynamic Typing) означает, что тип переменной определяется в момент присваивания значения (во время выполнения), а не при объявлении. Одну и ту же переменную можно связать с объектами разных типов.
# Тип переменной меняется во время выполнения my_variable = 10 # my_variable - это int print(type(my_variable)) my_variable = "hello" # Теперь my_variable - это str print(type(my_variable)) -
Строгая типизация (Strong Typing) означает, что язык не позволяет смешивать в операциях переменные несовместимых типов. Попытка выполнить такую операцию вызовет ошибку.
# Попытка сложить число и строку вызовет TypeError # Это и есть проявление строгой типизации try: result = 10 + "5" except TypeError as e: print(f"Ошибка: {e}") # Вывод: Ошибка: unsupported operand type(s) for +: 'int' and 'str'
Ключевое отличие: В языках со слабой типизацией (например, JavaScript) интерпретатор попытался бы неявно преобразовать типы, и операция 10 + "5" могла бы вернуть строку "105" или число 15.
Для добавления статической проверки типов в Python используется механизм аннотаций типов (PEP 484) и специальные инструменты, такие как mypy.