Выбор ответа Senior Типизация обновлено
Когда нужен @overload
Вопрос
Функция get(key, default=None) возвращает str, если default строка, и str | None, если default не передан. Как выразить это точно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Несколько сигнатур с @overload и одна реализация. @overload описывает несколько вариантов сигнатуры для анализатора, а последняя функция без декоратора это реализация.
Варианты ответа
- Несколько сигнатур с
@overloadи одна реализацияправильный ответ -> Any, анализатор сам выведет тип-> str | Noneдля всех случаев- Две функции с одинаковым именем без декораторов
Разбор
@overload описывает несколько вариантов сигнатуры для анализатора, а последняя функция без декоратора это реализация. Тогда get("a", "x") типизирован как str, без лишней проверки на None. Any и общий str | None теряют точность, а вторая функция без декораторов просто перезапишет первую.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.