Встречается на 3% собеседований по Python

Какие методы реализованы у генераторов

Генераторы в Python имеют несколько встроенных методов для управления их выполнением:

  1. send(value) – отправляет значение в генератор, которое становится результатом текущего yield.
    python
    def gen():
        x = yield 1
        yield x + 2
    g = gen()
    next(g)  # 1
    print(g.send(10))  # 12
  1. throw(exc) – вызывает исключение exc на текущем yield.

    python
    def gen():
        try:
            yield 1
        except ValueError:
            yield "Caught!"
    g = gen()
    next(g)
    print(g.throw(ValueError))  # "Caught!"
  2. close() – вызывает GeneratorExit в генераторе, завершая его.

    python
    def gen():
        try:
            yield 1
        except GeneratorExit:
            print("Closed")
    g = gen()
    next(g)
    g.close()  # Выведет "Closed"
  3. __next__() (или next()) – запускает выполнение до следующего yield.

Генераторы также поддерживают итерацию через for или next().

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

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

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