Описание тега generator

Генератор - это обобщение подпрограммы, в основном используемое для упрощения написания итераторов. Оператор yield в генераторе не указывает сопрограмму, к которой нужно перейти, а скорее передает значение обратно в родительскую процедуру.

Из Википедии:

Генератор - это специальная процедура, которую можно использовать для управления итерационным поведением цикла. Генератор очень похож на функцию, которая возвращает массив, поскольку генератор имеет параметры, может быть вызван и генерирует последовательность значений. Однако вместо того, чтобы создавать массив, содержащий все значения, и возвращать их все сразу, генератор выдает значения по одному, что требует меньше памяти и позволяет вызывающей стороне немедленно приступить к обработке первых нескольких значений. Короче говоря, генератор выглядит как функция, но ведет себя как итератор.

Генераторы могут быть реализованы в виде более выразительных конструкций потока управления, таких как сопрограммы или первоклассные продолжения.