Iterators vs Generators


  • a generator is an iterator
  • an iterator is an iterable


examples/generators/iterable.py

from collections.abc import Iterator, Iterable
from types import GeneratorType

print( issubclass(GeneratorType, Iterator) )  # True
print( issubclass(Iterator, Iterable) )       # True
  • Genarators are a simpler way to create an iterable object than iterators, but iterators allow for more complex iterables.
  • To create an iterator we need a class with two methods: __iter__ and __next__, and a raise StopIteration.
  • To create a generator we only need a single function with `yield .