Дан генератор: 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))?Ещё вопросы по теме «Итераторы и генераторы»
- Есть `xs = [1, 2, 3]` и `it = iter(xs)`. Сначала выполняется `a = list(it)`, а затем `b = list(it)`. Чему равно `b`?
- Есть `it = iter(['a', 'b'])`. Что вернёт вызов `next(it)`?
- Что создаёт выражение `squares = (x * x for x in xs)`?
- В отладке вы сделали `pairs = zip(users, spends)`, затем `debug = list(pairs)`. После этого `d = dict(pairs)` оказался пустым. Почему?
- Что произойдёт при выполнении `it = iter([])` и затем `next(it)`?
- Все вопросы по «Итераторы и генераторы» →