Generators
Generators are based on the concept of iteration, as we said before, and they allow coding patterns that combine elegance with efficiency.
Generators are of two types:
- Generator functions: These are similar to regular functions, but instead of returning results through
return
statements, they useyield
, which allows them to suspend and resume their state between each call. - Generator expressions: These are similar to the list comprehensions we have seen in this chapter, but instead of returning a list, they return an object that produces results one by one.
Generator functions
Generator functions behave like regular functions in all respects, except for one difference: instead of collecting results and returning them at once, they are automatically turned into iterators that yield results one at a time.
Suppose we asked you to count from 1 to 1,000,000. You start, and at some point, we ask you to stop. After some time, we ask you to...