Короткий ответ В языке с динамической типизацией проверка типов происходит во время исполнения программы, а не на этапе компиляции. В Python не нужно объявлять тип переменной: интерпретатор выводит его из присвоенного значения, поэтому одна переменная может хранить объекты разных типов. Как это работает подробнее Динамическая типизация в Python сочетается с сильной: это разные оси, и вместе они определяют поведение языка. Вывод типа по значению. Переменная не привязана к типу: интерпретатор назначает его в момент присваивания, и позже переменной можно присвоить значение другого типа. Сильная типизация. Python не выполняет неявных преобразований, если они небезопасны: например, сложение строки с числом приводит к ошибке TypeError. Проверка в рантайме. Ошибки, связанные с типами, обнаруживаются при выполнении кода, а не до запуска, что требует внимательности и тестов. Пример кода Что использовать на практике Компактный код. Отсутствие объявлений типов ускоряет написание и сокращает объём кода. Аннотации типов.