Я просмотрел множество потоков' 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» и не увидел никаких причин, по которым код может сломаться.