Раздел 45 · Python backend: Тарбадель

overload, сужение и TypeIs

middle-senior~40 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Записи контрактов теперь разбирает parse_contract из прошлого урока, и 0305 с 0306 до картотеки не доходят. Лорра кладёт на стол папку 0307. В ней не запись, а код: две функции, через которые Архив выдаёт контракты.

Обе функции 0307 про одно: что mypy знает о значении в каждой точке программы. fetch знает слишком мало: тип ответа зависит от того, что передали, а подпись этого не говорит. is_contract заставляет mypy знать слишком много: после её «да» он считает словарь контрактом, хотя никто этого не проверял.

В этом уроке ты научишь подпись менять ответ в зависимости от аргумента, разберёшь, как mypy сужает тип внутри if, и напишешь стража, которому можно верить. Подделку 0307 поймает тот, кто сверит стража с правдой.

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.