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