Работа iter() и генератора в Python отличается:
iter() создаёт итератор из вызываемого объекта (функция или класс с реализованным методом call). 2 Первый аргумент должен быть вызываемым объектом, а второй — неким ограничителем. 2 Вызываемый объект вызывается на каждой итерации, итерирование завершается, когда возбуждается исключение StopIteration или возвращается значение ограничителя. 2
Генератор — это языковая конструкция, которую можно реализовать двумя способами: как функцию с ключевым словом yield или как генераторное выражение. 2 В результате вызова функции или вычисления выражения получается объект-генератор, который реализует интерфейс итератора. 2
Таким образом, итератор — это механизм поэлементного обхода данных, а генератор позволяет отложено создавать результат при итерации. 2 Он помогает сэкономить оперативную память при переборе больших (и даже бесконечных) последовательностей. 1