Встречается на собеседованиях • сегодня

В чем синтаксическая разница генератора и корутины

Генераторы и корутины используют синтаксис yield, но имеют разные семантики:

  1. Генератор производит значения через yield и приостанавливается до следующего вызова next():
python
def gen():
    yield 1
    yield 2

g = gen()
print(next(g))  # 1
print(next(g))  # 2
  1. Корутина потребляет значения через 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)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы