[Python-Dev] PEP 377 - allow __enter__() methods to skip the statement body

Michael Foord fuzzyman at voidspace.org.uk
Sun Mar 15 23:37:11 CET 2009

Aahz wrote:
> On Sun, Mar 15, 2009, Michael Foord wrote:
>> Note that using exceptions for control flow can  be bad for other  
>> implementations of Python. For example exceptions on the .NET framework  
>> are very expensive. (Although there are workarounds such as not really  
>> raising the exception - but they're ugly).
>> Isn't it better practise for exceptions to be used for exceptional  
>> circumstances rather than for control flow?
> It seems to me that we as a development community already made a decision
> when we switched to StopIteration as the primary mechanism for halting
> ``for`` loops.  (Not that it was really a new decision because parts of
> the Python community have always advocated using exceptions for control
> flow, but the ``for`` loop enshrines it.)  I doubt that using exceptions
> for control flow in ``with`` blocks will cause anywhere near so much a
> performance degradation.
Well, StopIteration is still an implementation detail that only 
occasionally bleeds through to actual programming. It says nothing about 
whether using exceptions for non-exceptional circumstances (control 
flow) is good practise. Personally I think it makes the intent of code 
less easy to understand - in effect the exceptions *are* being used as a 



More information about the Python-Dev mailing list