yield возвращает следующее значение и замораживает контекст функции, включая локальные переменные и позицию выполнения. Следующий вызов next() возобновляет выполнение с этой точки.
Генераторы экономят память, поскольку данные не создаются полностью заранее. Он рассчитывается по требованию.
Суммируя:
yield реализует поведение паузы и возобновления.
- Генератор поддерживает ленивые вычисления.
- Это уменьшает объем памяти для больших наборов данных.
Итог
yield возвращает следующее значение и замораживает контекст функции, включая локальные переменные и позицию выполнения.