Почему exec не работает в функции с подфункцией?

Похоже, вы не можете использовать exec в функции, у которой есть подфункция ...

Кто-нибудь знает, почему этот код Python не работает? Я получаю сообщение об ошибке при выполнении в test2. Кроме того, я знаю, что стиль exec - плохой, но поверьте мне, я использую exec по уважительной причине. Я бы не стал использовать его иначе.

#!/usr/bin/env python
#

def test1():
    exec('print "hi from test1"')

test1()

def test2():
    """Test with a subfunction."""
    exec('print "hi from test2"')
    def subfunction():
        return True

test2()

РЕДАКТИРОВАТЬ: Я сузил ошибку до наличия функции в подфункции. Это не имеет ничего общего с ключевым словом Raise.

53
задан martineau 20 July 2017 в 15:13
поделиться