z — генераторная функция. Вызов z() создаёт объект генератора, а каждый next продвигает выполнение до следующего yield, выдавая числа от 0 до 9 и сохраняя состояние между обращениями.
Исследование поведения генераторной функции с использованием yield
z — генераторная функция. Вызов z() создаёт объект генератора, а каждый next продвигает выполнение до следующего yield, выдавая числа от 0 до 9 и сохраняя состояние между обращениями.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Как выглядит следующий фрагмент кода:
def z():
for i in range(10):
yield i
Что делает данная функция и как работает оператор yield?
Ответ
z — генераторная функция. Вызов z() создаёт объект генератора, а каждый next продвигает выполнение до следующего yield, выдавая числа от 0 до 9 и сохраняя состояние между обращениями.
Пример использования:
generator = z()
print(next(generator)) # 0
print(next(generator)) # 1
print(list(generator)) # [2, 3, 4, 5, 6, 7, 8, 9]
После окончания цикла генератор исчерпан, и следующий next поднимет StopIteration. for обрабатывает это автоматически. Вызов z() сам не печатает значения и не создаёт список всех чисел. Новый вызов z() создаёт независимый обход с начала.