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. -- https://mail.python.org/mailman/listinfo/python-list