Exceptions as a Control Structure

Chris Cioffi evenprimes at gmail.com
Mon Aug 9 09:28:39 EDT 2004


And don't forget about:

for key in sequence:
    foo = dictionary.get(key, "not found")

:)

Chris

On Mon, 09 Aug 2004 09:16:28 -0400, Roy Smith <roy at panix.com> wrote:
> In article <411775aa$0$17867$626a14ce at news.free.fr>,
> Olivier Parisy <olivier.parisy at free.fr> wrote:
> 
> > Hi all,
> >
> > I am new to Python (I just finished Guido's tutorial).
> > I was very surprised to learn there that the StopIteration
> > is used to end for loops in a standard iterator setting.
> >
> > I come from C++, where the use of exceptions as control
> > structures is frowned upon for efficiency reasons.
> >
> > What is the Python canon on this topic ? Are exceptions
> > considered as reasonable control structures, or is
> > StopIteration alone of its kind ?
> 
> Lots of things you do in C++ are frowned upon in Python.  Lots of things
> you do in Python are frowned upon in C++.
> 
> Specifically, exceptions in C++ are generally considered fairly
> heavy-weight, but not so in Python.  Here's another common python idiom
> that uses exceptions in a way which would probably horrify most C++
> people:
> 
> for key in sequence:
>   try:
>      foo = dictionary [key]
>   except KeyError
>      foo = "not found"
> 
> instead of:
> 
> for key in sequence:
>   if dictionary.has_key (key):
>      foo = dictionary [key]
>   else
>      foo = "not found"
> 
> If you're reasonably sure that most of the keys will be found in the
> dictionary, it's probably faster to just try them all and handle the
> occasional exception than to test each key to see if it exists.
> 
> 
> --
> http://mail.python.org/mailman/listinfo/python-list
> 


-- 
Still searching for an even prime > 2!



More information about the Python-list mailing list