[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