Когда вы пишете
x = [], интерпретатор Python знает, что это список, но не знает, что в нем будет лежать. Разные тайп-чекеры решают эту загадку по-разному.Стратегия 1: Все дозволено (`Any`)
Кто использует: Pyright, Pyre, Ty.
Как работает: Тайп-чекер просто помечает список как
list[Any].Плюс: Минимум ложных ошибок. Можно класть что угодно.
Минус: Нулевая безопасность. Ошибки (например, добавление списка вместо строки) проскочат в продакшен и вызовут краш в рантайме.
Стратегия 2: Анализ всех использований
Кто использует: Pytype.
Как работает: Чекер смотрит на весь код функции. Если вы добавили в список
1, а потом "foo", он выведет тип list[int | str].Плюс: Максимально близко к поведению Python в рантайме.
Минус: Если ошибка закралась в начале функции, тайп-чекер может подсветить её только в самом конце (на `return`), что затрудняет отладку.
Стратегия 3: Вывод по первому использованию
Кто использует: Mypy, Pyrefly (по умолчанию).
Как работает: Тип фиксируется по первой операции
append или add.Пример: Если сначала добавили число, а потом пытаетесь добавить строку — вы получите ошибку сразу на строке с кодом.
Плюс: Ошибки подсвечиваются именно там, где они возникли. Это делает их максимально понятными и легко исправимыми.
🔗 Полный текст статьи
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
