yield
yield
- это ключевое слово в Python, которое используется для создания генераторов. Когда функция содержит оператор yield
, она становится генераторной функцией, и yield
указывает на точку, в которой выполнение функции должно приостановиться, а текущее состояние функции сохраняется. Это позволяет лениво генерировать значения и возвращать их по мере необходимости, не создавая и не храня все значения в памяти.
Процесс работы yield
:
Когда функция-генератор вызывается, она не начинает выполняться с начала. Вместо этого, создается объект-генератор, представляющий функцию, и выполнение функции останавливается до первого оператора
yield
.Когда вы вызываете
next()
для генератора (или используете его в циклеfor
), выполнение функции продолжается с точки, на которой было приостановлено до ближайшего оператораyield
.Значение, указанное после
yield
, возвращается как результат выполненияnext()
.После выполнения оператора
yield
, состояние функции сохраняется, и при следующем вызовеnext()
, выполнение продолжается с того места, на котором оно было приостановлено, и так далее, пока не достигнут конец функции или не вызван операторreturn
.
Пример использования yield
:
def simple_generator():
yield 1
yield 2
yield 3
gen = simple_generator()
# При первом вызове next() выполнение функции начнется с начала и будет приостановлено на первом операторе yield
print(next(gen)) # Вывод: 1
# При следующем вызове next() выполнение продолжится с точки, на которой было приостановлено, и будет приостановлено на следующем операторе yield
print(next(gen)) # Вывод: 2
# То же самое произойдет при последнем вызове next()
print(next(gen)) # Вывод: 3
# После того как все значения были возвращены, вызов next() вызовет исключение StopIteration, чтобы указать, что итерация завершена
Last updated
Was this helpful?