При запуске программы будут выведены 4 и 5 на отдельных строках. Третий участок генератора ещё не выполнится, потому что next вызван только два раза.
Генератор Python: вывод 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__' не запускается.