Есть функция def f(x): print(x); return x. Создали g = (f(x) for x in [1, 2, 3]). Сразу после создания g сколько раз выполнится print(x)?

A3 раза
B1 раз
C0 раз
DСразу будет выброшено исключение StopIteration.
Правильный ответ. Generator expression не вызывает f(x) при создании; вызовы происходят при итерации.

Разбор

Строка g = (f(x) for x in [1, 2, 3]) создаёт объект генератора, но не запускает вычисление элементов. f(x) будет вызываться только когда вы начнёте читать из g — например, через next(g), list(g) или цикл for x in g.

Проверь себя · 1/3разбор после ответа
Что создаёт выражение squares = (x * x for x in xs)?
Тренировать Python в Telegram

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