Мне это нравится, мне безопаснее :)
смотрел множество тем «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» и не увидел причин, по которым код мог сломаться.