Je ne comprends pas dans quel environnement une instruction eval ou exec s'exécute. Vous pouvez leur passer des étendues globales et locales, mais je ne comprends pas très bien ce que cela signifie. Python crée-t-il pour eux un module anonyme, et si tel est le cas, en quoi la portée globale et locale est-elle différente?Environnement d'exécution Python Eval
L'exécute-t-il comme s'il s'agissait d'une fonction anonyme? Si c'était le cas, les étendues globales et locales auraient plus de sens pour moi, bien que vous deviez encore appeler global var
pour empêcher python de faire une variable locale sur l'affectation?
Et voici un code pour montrer ce que je suis en train de faire.
# module level vars
result = ''
allowed_builtins = {"__builtins__":{'int':int, 'str':str, 'range':range, 'dir':dir,
'zip':zip
},
"result":result}
En classe
def _exec(self, answer, function_name, input):
global result
exec_string = answer + '\n'
exec_string += 'global result; result = %s(%s)' % (function_name, input)
exec exec_string in allowed_builtins, {}
return result
je voudrais le résultat var dans mon champ pour pouvoir être mis à l'intérieur du périmètre du eval/exec.
QUESTION POSÉE !!!!!!!!!
merci, je comprends ce que je faisais mal maintenant. – jacob