Ключевое слово yield используется в Python для создания генераторов.
Генератор — это функция, которая возвращает итератор. Вместо того чтобы возвращать все значения сразу (как обычная функция), генератор "отдает" значения по одному с помощью yield, сохраняя при этом свое внутреннее состояние между вызовами.
Основные преимущества использования генераторов с yield:
Как это работает:
yield вызывается, она не выполняется сразу, а возвращает объект-генератор.next() для генератора (например, в цикле for), код функции выполняется до первого оператора yield. Значение справа от yield возвращается. Состояние функции (локальные переменные и где остановилось выполнение) сохраняется.next(), выполнение возобновляется ровно с того места, где остановилось после предыдущего yield.return без значения (или пустой return). В этом случае возбуждается исключение StopIteration, сигнализируя об окончании последовательности.Пример:
python
Использование генератора:
python
yield также может использоваться для получения значений извне генератора с помощью метода send(), позволяя создавать сопрограммы, но это более продвинутый сценарий использования.