Ленивое вычисление: Элементы генерируются по мере необходимости, а не все сразу.
Экономия памяти: Генераторы не хранят всю последовательность в памяти, что критично для больших данных.
Использование итераторов: Генератор — это тоже итератор, поддерживающий протокол итератора __iter__() и __next__().
Использование ключевого слова yield: Функция с yield становится генератором. При каждом вызове next() генератор возобновляет выполнение после последнего yield.
python
генераторные выражения (generator expressions): более компактный синтаксис для создания простых генераторов, похожий на списковые включения, но в круглых скобках.