Встречается на собеседованиях • сегодня
В чем синтаксическая разница генератора и корутины
Генераторы и корутины используют синтаксис yield, но имеют разные семантики:
- Генератор производит значения через
yieldи приостанавливается до следующего вызоваnext():
python
def gen():
yield 1
yield 2
g = gen()
print(next(g)) # 1
print(next(g)) # 2- Корутина потребляет значения через
yield(используется как выражение) и требует.send()для передачи данных:
python
def coro():
x = yield "Ready"
yield f"Got: {x}"
c = coro()
print(next(c)) # "Ready" (инициализация)
print(c.send(42)) # "Got: 42"Ключевые отличия:
- Генераторы однонаправленные (производят значения), корутины двунаправленные (принимают и возвращают)
- Корутины требуют
.send()вместоnext() - В корутинах
yieldможет быть справа от присваивания (x = yield)

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы