Мне это нравится, мне безопаснее :)

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

Ответы на вопрос(2)

Ваш ответ на вопрос