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

В чем разница между генератором, итератором и корутиной

Генератор — это функция с yield, которая при вызове возвращает итератор. Он лениво генерирует значения по одному и сохраняет состояние между вызовами.

Итератор — объект с методами __iter__() и __next__(), который возвращает элементы последовательности по одному. Все генераторы — итераторы, но не наоборот.

Корутина — расширенный генератор, который может принимать значения через .send(value) и используется для кооперативной многозадачности.

Пример:

python
# Генератор
def gen():
    yield 1
    yield 2

# Итератор
class MyIter:
    def __iter__(self):
        return self
    def __next__(self):
        return 1  # или raise StopIteration

# Корутина
def coro():
    val = yield
    print(f"Received: {val}")

Генераторы и корутины используют yield, но корутины — двусторонние (прием/отправка данных).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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