[Python-Dev] Chaining try statements: eltry?

Jack Diederich jack at performancedrivers.com
Fri Jul 8 00:54:41 CEST 2005


On Thu, Jul 07, 2005 at 03:03:35PM -0400, Phillip J. Eby wrote:
> At 02:48 PM 7/7/2005 -0400, Tim Peters wrote:
> >[Guido, on {for,while}/else]
> >...
> > > The question remains whether Python would be easier to learn without
> > > them. And if so, the question would remain whether that's offset by
> > > their utility for experienced developers. All hard to assess
> > > impartially!
> >
> >That's what I'm here for.  I like loop "else" clauses, but have to
> >admit that (a) I rarely use them; (b) most of the time I use them, my
> >control flow is on the way to becoming so convoluted that I'm going to
> >rewrite the whole function soon anyway;
> 
> Interesting; I usually intentionally write "else" clauses intending to 
> *clarify* the code.  That is, I often use it in cases where it's not 
> strictly necessary, e.g.:
> 
>     for thing in something:
>         if blah:
>             return thing
>     else:
>         return None
> 
> Because to me this clarifies that 'return None' is what happens if the loop 
> "fails".

I use else similarly, for defensive programming.

for (thing) in searchlist:
  if (matches(thing)):
    keeper = thing
    break
else:
  raise ValueError("No thing matches()")

I can't say I use it for much else, if I really want a default I do
found = None
for (thing) in searchlist:
  if (matches(thing)):
    found = None
    break

That could end with 'else: found = None' to assign a default but I like
the default to come first for readability.

-Jack


More information about the Python-Dev mailing list