Making generators with the yield keyword#
Writing iterators is hard. Python makes it easier for you by making it easy to turn a function into a special kind of iterator, called a generator. In principle generators or simple, though there are many nuances that deserve careful attention— read the docs!
Here’s an example generator for the Collatz conjecture:
When you use the
yield keyword in a function, Python compiles the function specially so that it will be an iterator. The
__next__ method it generates runs your function until the next
yield, which provides the next value in the iteration.
There are subtle rules for how
return and exceptions interact, particularly because a generator’s return gets translated to a
StopIteration exception. If you can, it’s best to avoid mixing