try...finally is more powerful than I thought.

Brian Kelley bkelley at wi.mit.edu
Thu Nov 6 15:55:09 EST 2003


def res():
     try:
         a = 1
         return
     finally:
         print "do I get here?"

res()

outputs "do I get here?"

I can't say why I didn't really expect this, the control flow is a 
little wierd as the function isn't really returning at the "return" 
statement but executing the bit in the finally: block and then 
returning.  I think :)

That being said, I like it a lot.  How is this working internally?  Does 
the finally get executed when try code block goes out of scope?  This 
would happen during a return or an exception which could explain the magic.

Brian





More information about the Python-list mailing list