J'ai parcouru les innombrables fils de discussion sur l'exécution de Python sur SO, mais je n'ai pas trouvé de réponse à mon problème. Je suis terriblement désolé si cette question a déjà été posée. Voici mon problème :
# 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()
Comme la définition de la fonction standard fonctionne dans les deux versions de Python, je suppose que le problème doit venir d'un changement dans la façon dont exec fonctionne. J'ai lu les docs de l'API pour 2.6 et 3 pour exec
J'ai également lu la page "What's New In Python 3.0" et je n'ai pas vu de raison pour laquelle le code serait cassé.