Generator vs Iterator
Как ни странно, вопрос о разнице между генераторами и итераторами в Python — довольно частый. В общем‑то эти сущности сильно связаны (любой генератор — это итератор), их довольно часто путают, что иногда приводит к недопониманиям. Итератор — более общая концепция. Это объект, у которого определены два метода: __next__ и __iter__. С другой стороны, генератор — это итератор, но не наоборот. Генератор может получаться с использованием yield в теле функции: def squares(start, stop): for i in range(start, stop): yield i * i generator = squares(a, b) Либо с использованием так называемых generator expression — например, такого: ...