Je suis en train de créer une application de type interpréteur Python personnalisé. J'utilise l'instruction exec (en Python 2.7.6) pour exécuter le code donné mais les variables globales ne fonctionnent pas tout à fait comme prévu. Est-ce que quelqu'un pourrait expliquer pourquoi cela ne fonctionne pas :
def print_x():
print(x)
g = {'x': 10, 'print_x': print_x}
l = {}
exec('print_x()', g, l)
Le résultat (que la fonction print_x soit dans g ou dans l), est une erreur :
NameError: global name 'x' is not defined
Alors, est-ce que les variables globales passées à exec ne sont pas transmises aux fonctions appelées ?