How to do this in Python...

Carl Banks imbosol at vt.edu
Sat Jan 25 23:25:25 CET 2003


Michael Tiller wrote:
> My thanks go out to those people who mentioned the "holder" idiom (rather
> than just throwing up their arms in ideological disgust at the idea of
> somebody even suggesting such a construct)

Honestly, what do you expect, considering your original post?  When
you call the following code snippet "overly verbose":

   match = re.match(...)
   if match:
       ...

people are going to get ideological on you; rightly so.  You never
said why you wanted the assignment expression, and it turns out your
intended use was the only quasi-acceptable use for it.

If you had said "Python is incomplete because you can't do this
set-and-test idiom" instead of "Python is incomplete because it
doesn't allow assignment inside if," you would have gotten less
ideology.


> since the "holder" idiom was
> exactly what I needed because it allows me to use if..elif..else without the
> easy to misunderstand syntax of C and C++.

People often say Python is defective or incomplete for not allowing
assignment inside if-conditions, because you can't do this silly
idiom.  Yet it never seems to occur to anyone that there are other
ways to accomplish this besides assignment-if.

I'm happy the holder idiom works for you.  I prefer to do it this way,
although I rarely do it:


    for i in [1]:
        m = re.match(...)
        if m:
            ...
            break

        m = re.match(...)
        if m:
            ...
            break


-- 
CARL BANKS




More information about the Python-list mailing list