Что выведет код Middle Итераторы и генераторы обновлено

Порядок выполнения генератора

Вопрос

Что выведет код? По строке на каждый print.

def gen():
    print('A')
    yield 1
    print('B')
    yield 2
    print('C')

for x in gen():
    print(x)

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: A, 1, B, 2, C. Тело генератора выполняется кусками между yield.

Что выведет

A
1
B
2
C

Разбор

Тело генератора выполняется кусками между yield. Первый next печатает A и отдаёт 1, цикл печатает 1. Второй печатает B, отдаёт 2. Третий next печатает C, функция заканчивается, StopIteration завершает цикл.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме