[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:
>>[snip]
>>
>>>- 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:
   try:
     yield None
   except ContinueIteration, exc:
     VAR = ContinueIteration.value

We definitely don't want that construct swallowing AbortIteration.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://boredomandlaziness.skystorm.net


More information about the Python-Dev mailing list