Генератор - это функция, вызов которой возвращает следующий объект согласно алгоритму. В отличии от итераторов, для генератора нужно написать лишь функцию, без использования классов. Напишем функцию-генератор: Он также будет генерировать рандомные числа от 0 до 1 k раз. Ключевое слово yield говорит о том, что функция является генератором и используется вместо return. Также стоит отметить, что yield позволяет исполнение кода после своего исполнения, в отличии от return, который останавливает выполнение функции. Что позволяет использовать несколько yield-ов в одном генераторе и писать дополнительные команды после возврата итераций. Чтоб генератор мог возвращать значения бесконечное(n) количество раз, он должен содержать цикл. Создадим переменную-генератор, которая будет по сути итератором: Тип переменной определяется как объект класса 'generator'. Мы можем проитерировать генератор: Как видно, разницы результата с итератором нет, но при этом мы имеем более простую конструкцию написани