Я просмотрел потоки Myriad "Python exec" на SO, но не смог найти тот, который ответил на мою проблему. Ужасно жаль, если это было задано раньше. Вот моя проблема:
# Python 2.6: prints 'it is working'
# Python 3.1.2: "NameError: global name 'a_func' is not defined"
class Testing(object):
def __init__(self):
exec("""def a_func():
print('it is working')""")
a_func()
Testing()
# Python 2.6: prints 'it is working'
# Python 3.1.2: prints 'it is working'
class Testing(object):
def __init__(self):
def a_func():
print('it is working')
a_func()
Testing()
Как стандартное определение функции работает в обеих версиях Python, я предполагаю, что проблема должна быть связана с тем, как работает exec. Я прочитал документы API для 2.6 и 3 для exec
, а также прочитал страницу "Что нового в Python 3.0" и не видел никакой причины, по которой код сломался.