Je veux réellement créer un nouveau local. Je sais que cela semble douteux, mais je pense que j'ai un bon cas d'utilisation pour cela. Essentiellement mon problème est que ce code jette « NameError: nom global « œufs » ne sont pas définis » lorsque je tente d'imprimer des œufs:Existe-t-il un moyen d'affecter les locaux au moment de l'exécution?
def f():
import inspect
frame_who_called = inspect.stack()[1][0]
frame_who_called.f_locals['eggs'] = 123
def g():
f()
print(eggs)
g()
J'ai trouvé cette vieille chose: http://mail.python.org/pipermail/python-dev/2005-January/051018.html
Ce qui voudrait dire que je pourrait être en mesure de le faire en utilisant ctypes et en appelant une fonction secrète, mais ils ont seulement parlé de mettre à jour une valeur. Mais peut-être y a-t-il un moyen plus facile?
Ce code fonctionne en python 2.5.4, donc il semble que py3k a changé quelque chose ici. – liori
Je remets en question votre utilisation de "gentil" en référence au cas d'utilisation associé. Pourriez-vous élaborer? –
Construire un DSL en utilisant une syntaxe de type python en python. C'est assez sympa pour moi. – liori