118 votes

Comportement bizarre de Try-Except-Else-Finally avec les instructions Return

C'est un code qui se comporte de façon particulière. Il s'agit d'une version simplifiée du comportement que j'ai écrit. Cela démontrera quand même le comportement bizarre et j'ai eu quelques questions spécifiques sur la raison pour laquelle cela se produit.

J'utilise Python 2.6.6 sous Windows 7.

def demo1():
    try:
        raise RuntimeError,"To Force Issue"
    except:
        return 1
    else:
        return 2
    finally:
        return 3

def demo2():
    try:
        try:
            raise RuntimeError,"To Force Issue"
        except:
            return 1
        else:
            return 2
        finally:
            return 3
    except:
        print 4
    else:
        print 5
    finally:
        print 6

Résultats :

>>> print demo1()
3
>>> print demo2()
6
3
  • Pourquoi la démo 1 renvoie 3 au lieu de 1 ?
  • Pourquoi la démo 2 imprime-t-elle 6 au lieu d'imprimer 6 avec 4 ou 5 ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X