weird try/finally behaviour

Sylvain Thénault sylvain.thenault at
Fri Apr 10 13:49:51 CEST 2009

Hi there,

I've encountered the following behaviour which I found surprising:

>>> def test():
...     for x in ('test', 'tests'):
...          try:
...             if True:
...                   print 'return'
...                   return 1
...          finally:
...             print 'break'
...             break
...     print 'end'
>>> test()

As you can see, the 'break' in the finally block makes the 'return 1' beeing ignored.
Is this a known caveat or should it be considered as a bug?
Sylvain Thénault                               LOGILAB, Paris (France)
Formations Python, Debian, Méth. Agiles:
Développement logiciel sur mesure:
CubicWeb, the semantic web framework:

More information about the Python-list mailing list