Генераторы очень легко реализовать, но немного сложны для понимания.
Генераторы используются для создания итераторов, но с другим подходом. Генераторы - это простые функции, которые возвращают итеративный набор элементов по одному особым образом.
Когда итерация по набору элементов начинается с использованием оператора for, запускается генератор. Как только код функции генератора достигает оператора yield, генератор возвращает свое выполнение обратно в цикл for, возвращая новое значение из набора. Функция генератора может генерировать столько значений (возможно, бесконечное), сколько хочет, выдавая каждое из них по очереди.
Вот простой пример функции генератора, которая возвращает 7 случайных целых чисел:
Эта функция сама решает, как сгенерировать случайные числа, и выполняет операторы yield по одному, делая паузы между ними, чтобы вернуть выполнение к основному циклу for.
Напишите функцию генератора, которая возвращает ряд Фибоначчи. Они вычисляются по следующей формуле: первые два числа ряда всегда равны 1, а каждое возвращаемое последовательное число является суммой двух последних чисел. Подсказка: можете ли вы использовать только две переменные в функции генератора? Помните, что задания можно выполнять одновременно. Код
одновременно переключит значения a и b.