Динамическая, но с элементами статической благодаря аннотациям типов.
В динамической типизации тип переменной определяется во время выполнения программы на основе присвоенного ей значения.
python
С версии Python 3.5 добавлены аннотации типов (type hints), которые позволяют указывать ожидаемый тип переменной, аргумента функции или возвращаемого значения. Это не делает Python статически типизированным языком в классическом понимании, но позволяет использовать статические анализаторы кода (например, mypy) для проверки типов до выполнения программы.
python
Основные отличия динамической и статической типизации:
| Характеристика | Динамическая типизация | Статическая типизация |
|---|---|---|
| Определение типов | Во время выполнения | Во время компиляции |
| Проверка ошибок типов | Во время выполнения | Во время компиляции |
| Гибкость | Выше | Ниже |
| Производительность | Может быть ниже (из-за проверок в процессе выполнения) | Часто выше (типы известны заранее) |
Несмотря на аннотации, Python остается динамически типизированным языком, так как проверка типов во время выполнения все равно происходит, и можно присвоить переменной значение другого типа, даже если была синтаксическая аннотация. Аннотации служат для улучшения читаемости кода, облегчения отладки и использования инструментов статического анализа.