Maison > développement back-end > Tutoriel Python > Comment mettre à jour correctement les variables locales avec la fonction « exec » de Python ?

Comment mettre à jour correctement les variables locales avec la fonction « exec » de Python ?

Barbara Streisand
Libérer: 2024-12-06 13:47:11
original
468 Les gens l'ont consulté

How to Correctly Update Local Variables with Python's `exec` Function?

Comment mettre à jour les variables locales à l'aide d'exec en Python

La fonction exec en Python permet d'exécuter dynamiquement le code au moment de l'exécution. Cependant, lorsque vous utilisez exec pour attribuer des valeurs à des variables locales, certains comportements peuvent être inattendus.

Le problème dans Python 3

Dans Python 3, le code suivant imprime 1 au lieu du 3 attendu :

def f():
    a = 1
    exec("a = 3")
    print(a)

f()
Copier après la connexion

Cela est dû au fait que dans Python 3, la fonction exec modifie par défaut l'espace de noms global. Pour modifier les variables locales, un dictionnaire local explicite doit être fourni.

Solution en Python 3

La bonne façon de mettre à jour les variables locales à l'aide d'exec dans Python 3 est :

def foo():
    ldict = {}
    exec("a = 3", globals(), ldict)
    a = ldict['a']
    print(a)
Copier après la connexion

Python 2 contre Python 3 Comportement

Dans Python 2, le code d'origine se comportait comme prévu car il supposait que la fonction exec modifierait l'espace de noms local. Cependant, Python 3 a modifié ce comportement à des fins d'optimisation.

Détails techniques

Dans Python 3, les variables locales sont généralement stockées dans un tableau, pas dans un dictionnaire. Cette optimisation évite la surcharge liée à la maintenance d'un dictionnaire pour les variables locales. Cependant, cela restreint également la capacité de exec à modifier directement les variables locales.

En fournissant un dictionnaire local explicite, la fonction exec est chargée d'exécuter le code dans cet espace de noms, permettant ainsi la mise à jour des variables locales.

Conclusion

Pour mettre à jour les variables locales à l'aide de exec dans Python 3, un dictionnaire local explicite doit être fourni. Cela garantit que la modification se produit dans le bon espace de noms et empêche un comportement inattendu du code.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal