[Python-Dev] Re: anonymous blocks

Nick Coghlan ncoghlan at gmail.com
Tue Apr 26 15:44:30 CEST 2005

Reinhold Birkenfeld wrote:
> Nick Coghlan wrote:
>>Guido van Rossum wrote:
>>>- I think there's a better word than Flow, but I'll keep using it
>>>  until we find something better.
>>How about simply reusing Iteration (ala StopIteration)?
>>   Pass in 'ContinueIteration' for 'continue'
>>   Pass in 'BreakIteration' for 'break'
>>   Pass in 'AbortIteration' for 'return' and finalisation.
>>And advise strongly *against* intercepting AbortIteration with anything other 
>>than a finally block.
> Hmmm... another idea: If break and continue return keep exactly the current
> semantics (break or continue the innermost for/while-loop), do we need
> different exceptions at all? AFAICS AbortIteration (+1 on the name) would be
> sufficient for all three interrupting statements, and this would prevent
> misuse too, I think.

No, the iterator should be able to keep state around in the case of 
BreakIteration and ContinueIteration, whereas AbortIteration should shut the 
whole thing down.

In particular "VAR = yield None" is likely to become syntactic sugar for:
     yield None
   except ContinueIteration, exc:
     VAR = ContinueIteration.value

We definitely don't want that construct swallowing AbortIteration.


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-Dev mailing list