Генератор — это специальный итератор, созданный функцией с yield. Он создает значения одно за другим и сохраняет внутреннее состояние между вызовами.
Отличия:
- из обычной функции: она не заканчивается одним
return, а ставится на паузу
и резюме;
- из ручного итератора: его проще реализовать, поскольку нет явного
Требуется класс
__next__.
Суммируя:
- Генератор — наиболее удобный способ реализовать ленивую итерацию.
- Для этого требуется меньше кода, чем для пользовательского класса итератора.
- Это особенно полезно для больших потоков данных.
Итог
Генератор — это специальный итератор, созданный функцией с yield.