Screwing Up looping in Generator

Erik python at lucidity.plus.com
Tue Jan 3 20:25:38 EST 2017


Hi,

On 04/01/17 01:12, Deborah Swanson wrote:
> The main reason you might want to catch the StopIteration exception is
> to do something else before your code simply stops running. If all
> you're doing is run a generator til it's out of gas, and that's all you
> want it to do, then there's no need to catch anything.

Ah! OK, I see where the lines are being crossed now ;) Although 
StopIteration is an exception, it is something that the 'for/iter' 
machinery handles for you under the covers. Each 'for' statement 
effectively has a 'try' block around it that catches 'StopIteration' and 
just terminates that particular 'for' loop and continues on with the 
remainder of your script.

Raising a 'StopIteration' is an internal mechanism used to determine 
when an iterator (i.e., the thing a 'for' loop is looping over) has 
exhausted itself. It's not something a regular user is ever expected to 
know about let alone catch.

When execution falls out of the bottom of a generator, StopIteration is 
raise (compared to a regular function or method returning 'None').

E.


More information about the Python-list mailing list