Странное поведение Try-Except-Else-Наконец с операторами Return

Это некоторый код, который ведет себя странно. Это упрощенная версия поведения, которое я написал. Это все еще продемонстрирует странное поведение, и у меня были некоторые конкретные вопросы о том, почему это происходит.

Я использую Python 2.6.6 в 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

Результаты:

>>> print demo1()
3
>>> print demo2()
6
3
Why is demo one returning 3 instead of 1? Why is demo two printing 6 instead of printing 6 w/ 4 or 5?

Ответы на вопрос(2)

Ваш ответ на вопрос