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

AВыведется только A
BВыведутся и A, и B
CНичего не будет выведено
DБудет исключение TypeError
Правильный ответ. Вызов функции-генератора возвращает объект-генератор, но тело функции не выполняется до первой итерации.

Разбор

После g = gen() Python создаёт объект-генератор, но код внутри функции ещё не запущен — print("A") не сработает. Тело начнёт исполняться только при первой итерации: next(g) или for x in g дойдёт до первого yield 1, и тогда увидим A. Следующий next(g) напечатает B и вернёт 2. TypeError не возникает: вызов gen() без аргументов корректен, ведь функция не принимает параметров.

Проверь себя · 1/3разбор после ответа
Что произойдёт при выполнении it = iter([]) и затем next(it)?
Тренировать Python в Telegram

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