Что выведет код 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 ошибок.
Предыдущий вопрос
Ленивое условие в генераторном выражении
Следующий вопрос
zip съедает элемент итератора
Термины по теме
Ещё по теме «Итераторы и генераторы»
- Когда выполняется тело генератора
- Разбить последовательность на пачки
- Рекурсивно развернуть вложенные списки
- Конвейер обработки лога на генераторах
- Свой итерируемый класс, который можно обходить много раз
- Когда выполняется finally в недочитанном генераторе
- Полезные функции itertools
- Ленивые вычисления