Генератор Python: вывод 4 и 5 при двух вызовах next

При запуске программы будут выведены 4 и 5 на отдельных строках. Третий участок генератора ещё не выполнится, потому что next вызван только два раза.

Короткий ответ

Что ответить на собеседовании

При запуске программы будут выведены 4 и 5 на отдельных строках. Третий участок генератора ещё не выполнится, потому что next вызван только два раза.

Подробный разбор

Ответ с пояснениями

Условие

# usage
def generator():
    a = 1 + 3
    yield a

    b = 2 + 3
    yield b

    c = 3 + 3
    yield c


if __name__ == '__main__':
    gen = generator()

    print(next(gen))
    print(next(gen))

[The task is to explain or work with the given Python generator function and its usage.]

Ответ

При запуске программы будут выведены 4 и 5 на отдельных строках. Третий участок генератора ещё не выполнится, потому что next вызван только два раза.

Вызов generator() создаёт объект генератора. Первый next начинает выполнение до первого yield, второй продолжает с места остановки до следующего.

4
5

Ещё один next(gen) вернул бы 6, а следующий после него вызвал бы StopIteration. Локальные переменные и позиция исполнения сохраняются между остановками. При импорте модуля блок if __name__ == '__main__' не запускается.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее