Generator Statements

What the for statement really does

In the section called “Iterative Processing: The for Statement”, we defined a for statement using the following summary:

for variable in sequence : suite

This isn't completely accurate, it turns out. We aren't limited to a sequence. The for statement actually requires an iterator or generator. Given an object which is not an iterator or generator, it will call the iter function to get an iterator over the container.

A more correct syntax summary is the the folliowing:

for variable in expression : suite

The Secret of for Once we've looked at generator functions and iterators, we can see what the for statement really does. The purpose of the for statement is to visit each value yielded by a generator, assigning each value to the variable . The for statement examines the expression to see if it is a generator function, or an object. If it is an object, it must respond to the iter function by providing a generator function. All of the built-in collections provide the necessary generator function.

Looking forward, we'll see many additional applications of this feature of the for statement. As we look at designing our own objects in Part III, “Data + Processing = Objects”, we'll want to assure that our objects work well with the for statement, also.