Узор будит тебя под утро. На его экране обрывок, который он выловил из журнала ярусов в 03:00, рядом со следами объекта, притворявшегося строкой:
def warden():
mode = "спит"
while True:
command = yield mode
if command == "проснись":
mode = "слушает"
elif command is not None and mode == "слушает":
mode = f"исполняет: {command}"
Элодий берёт распечатку, долго смотрит и возвращает: «Итератор ты написал в двух классах. Здесь итератор в одной функции, и он ещё и слышит. Как зовут функцию, которая умеет остановиться посреди тела и подождать?»
В прошлом уроке ты собрал итератор руками: класс, __next__, состояние в атрибутах, StopIteration в конце. Сегодня то же самое делается одним словом, yield. А потом выяснится, что yield умеет работать в обе стороны, и ты научишься говорить со скриптом Призрака: send, throw и close.
урок из курса
Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.