Ну типо например у тебя есть одно значение из которого ты генерируешь 1000 других… и ты не хочешь всё это хранить в памяти… генераторы позволят тебе хранить в памяти только одно значение и итерировать эту последовательность
Генераторы не хранят в памяти значения, они отработали выплюнули результат, перешли на следующий шаг и дальше ждут когда их дернут, тобишь они хранят своё состояние
я это давно все понял, я непонимаю как из итераторов получились генераторы, и почему я не могу в итераторе сгенерировать 1000 значений и прыгать по них нестам
Генераторная функция - это функция с yield, которая при вызове возвращает объект-генератор. То есть объект типа generator, который реализует протокол итератора