Странное поведение Try-Except-Else-Finally с операторами 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
  • Почему демоверсия возвращает 3 вместо 1?
  • Почему демо 2 печатает 6 вместо 6 с 4 или 5?
77
задан wim 25 October 2018 в 17:49
поделиться