Stub файлы и работа с нетипизированными библиотеками
Важно понимать, что type hinting работает не только для аргументов функций и возвращаемых значений. Мы можем просто создать переменную и указать ей тип:
book: str = "Тополек мой в красной косынке"
В таком сценарии это избыточно — IDE и статический анализатор кода и так видят, что в переменной book
хранится значение типа str
. Однако в таком сценарии:
book: str = find_book_in_library("Тополек мой в красной косынке")
функция поиска книги find_book_in_library
может быть не нашей функцией, а функцией какой-то внешней библиотеки, которая не использует подсказки типов. То есть для функции может быть не проставлен тип возвращаемого значения. Чтобы IDE и статический анализатор знали, что тип данных, который будет храниться в book
, это именно str
, можно таким образом подсказать инструментам о верном типе. Иногда это бывает очень полезно, когда библиотека не использует подсказки типов, а возвращаемый тип данных какой-то сложный и мы хотим, чтобы IDE и mypy нам помогали анализировать наш код и типы.
В то же время в Python существует механизм так называемых стаб-файлов, которые позволяют типизировать в том числе внешние библиотеки. Например, для django есть пакет в pip, который называется django-stubs
. О стаб-файлах есть видео на канале Диджитализируй!.
Если вы используете нетипизированную библиотеку — можно поискать готовые стаб-файлы для неё, чтобы воспользоваться преимуществами типизированного Python.