http://pythonz.net/peps/named/0255/
Генераторы являются простым средством для создания итераторов. Всё, что можно сделать при помощи генераторов можно также сделать при помощи итераторов, построенных на классах. Но в случае генераторов методы __iter__() и __next__() создаются автоматически, также автоматически возбуждается StopIteration
, да и поддерживать генераторы проще и удобнее, чем реализовывать то же с использованием классов.