[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 
goto.

Michael

-- 
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog




More information about the Python-Dev mailing list