Ответ
Для статической проверки типов в Python (type checking) используются специализированные анализаторы кода. Они помогают находить ошибки, связанные с типами, до запуска программы.
Основные инструменты:
-
Mypy — де-факто стандарт для статической типизации в Python. Он наиболее популярен и имеет широкую поддержку.
# Установка pip install mypy # Запуск проверки mypy your_script.py -
Pyright — разработан Microsoft, известен своей высокой скоростью. Является основой для языкового сервера Pylance в VS Code, обеспечивая проверку типов «на лету».
# Установка pip install pyright # Запуск проверки pyright your_script.py -
Pyre — разработан Meta (Facebook), ориентирован на производительность и масштабируемость в больших проектах.
# Установка pip install pyre-check # Инициализация и запуск pyre init pyre check
Важное различие:
- Статическая проверка (Mypy, Pyright) анализирует исходный код без его выполнения.
- Валидация в рантайме (например, с помощью Pydantic) проверяет типы данных во время выполнения программы, что критически важно для обработки внешних данных (например, из API-запросов).
Модуль typing сам по себе не выполняет проверок, а лишь предоставляет синтаксис для аннотаций типов, который затем используют анализаторы.
Ответ 18+ 🔞
А, ну это про то, как заставить питон не быть таким распиздяем с типами! Слушай, история простая, но пиздец важная.
Вот пишешь ты код, а питон — он же добрый, он тебе всё прощает, как бабушка. Напишешь x = "строка", а потом x + 5 — он тебе на этапе запуска такой: "Ой, внучек, TypeError тебе в лоб, на, получай!" И программа — накрылась медным тазом. Сука, обидно.
Чтобы такого не было, придумали статическую проверку типов. Это как надзиратель, который смотрит на твой код, не запуская его, и орёт: "Э, бошка думай! Ты тут строку с числом складываешь, пидарас шерстяной!". И ты заранее всё исправляешь.
Главные палачи на этой каторге:
-
Mypy — это, блядь, классика жанра. Все его знают, все его юзают. Де-факто царь и бог.
# Ставится проще простого pip install mypy # А потом ты ему файл суёшь, и он начинает тебя ебать mypy твой_скрипт.py -
Pyright — это штука от Microsoft, быстрая как хуй с горы. Встроена в VS Code (в плагин Pylance) и орёт на тебя прямо в редакторе, красными подчёркиваниями. Удобно, ёпта.
pip install pyright pyright твой_скрипт.py -
Pyre — это уже тяжёлая артиллерия от ребят из Meta (бывший Facebook). Заточена под огромные проекты, где код — как говна в сортире после праздника.
pip install pyre-check pyre init # Она там себе настроечки создаст pyre check # И пошла проверять
Вот тут, блядь, важный момент, чтобы не обосраться:
- Статическая проверка (Mypy, Pyright) — это превентивный удар. Код не запускается, она просто читает твои аннотации и мозолит глаза.
- Валидация в рантайме — это когда программа уже бежит, и ты, например, данные от пользователя получил. Тут тебе не Mypy поможет, а Pydantic, например. Он в момент выполнения схватит кривые данные и скажет: "Нет, мудила, я ждал число, а ты мне строку прислал!". Без этого — пипец, уязвимости и прочая хуйня.
И запомни раз и нахуй: модуль typing — это не волшебник. Это просто набор слов, чтобы аннотации писать. Сам по себе он нихуя не проверяет. Он как кисточка, а Mypy — это уже художник, который смотрит, криво ты этой кисточкой мазнул или нет.
Вот и вся магия. Пиши типы, запускай mypy, исправляй ошибки до того, как они тебя найдут в проде. И будет тебе счастье, а не "вротберунчик" в три часа ночи.