Surmonter les limitations de mise à jour des variables avec Python Exec
En Python, la fonction exec permet l'exécution dynamique du code Python au moment de l'exécution. Cependant, lorsqu'il est utilisé avec des variables locales, il peut se comporter de manière inattendue.
Le problème :
Considérez le code suivant :
def f(): a = 1 exec("a = 3") print(a) f()
En Python 2, ce code imprimerait 3, indiquant que la variable locale a a été mise à jour dans l'appel exec. Cependant, dans Python 3, il imprime 1, ce qui soulève la question de savoir comment mettre à jour les variables locales lors des appels d'exécution.
La solution :
Pour résoudre ce problème, vous devez transmettre explicitement un dictionnaire locals à la fonction exec :
def foo(): ldict = {} exec("a = 3", globals(), ldict) a = ldict['a'] print(a)
En utilisant locals(), vous créez un nouvel espace de noms de variable locale pour le appel exécutif. Les modifications apportées à cet espace de noms seront reflétées dans la portée locale de la fonction foo.
Points clés :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!