Python генераторы
Генератор - это обыкновенная функция python. Главное отличие - это то, что данные она возвращает не командой return, а командой yield.
Эта команда и будет генерировать последовательность значений.
И если вызвать такую функцию - она не вернёт объект генератора, не значение. Затем из данного объекта посредством функции next или цикла for удастся получить значения, которые должна была вернуть функция.
Когда генератор вернёт все данные - будет брошен эксепшн типа StopIteration. По сути - генератор это тот же итератор, просто выглядит по-другому.