Дан генератор: def gen(): print('A'); yield 1; print('B'); yield 2. Сразу после g = gen() что будет выведено в консоль?

AВыведется A.
BВыведутся A и B.
CНичего не выведется, пока не начать итерацию (например, next(g)).
DБудет выброшено исключение TypeError.
Правильный ответ. Код внутри генератора выполняется только при итерации, до первого yield.

Разбор

Вызов g = gen() создаёт объект генератора, но не запускает тело функции. Тело начнёт выполняться при next(g) или при цикле for x in g. Поэтому до начала итерации ничего не печатается.

Проверь себя · 1/3разбор после ответа
Функция-генератор squares(n) делает yield i * i для i из range(n). Чему равно list(squares(3))?
Тренировать Python в Telegram

Ещё вопросы по теме «Итераторы и генераторы»