Генераторы и yield в Python: как это работает
Уроки курсаГенераторы и yield в Python: как это работает
Генератор в Python выдаёт значения по одному, не создавая всю последовательность заранее. Обычная функция заканчивает работу через return, а функция с yield приостанавливается: локальные переменные и позиция выполнения сохраняются до следующего вызова next().
def squares(limit: int):
for number in range(limit):
yield number ** 2
values = squares(3)
print(next(values)) # 0
print(next(values)) # 1
print(list(values)) # [4]
Вызов squares(3) не выполняет тело функции целиком. Он возвращает объект-генератор. Каждый next() продолжает код до следующего yield; после исчерпания функции возникает StopIteration. Цикл for обрабатывает этот протокол автоматически.
0 / 0
К странице курса0 / 0
К странице курса