[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