Maison >développement back-end >Tutoriel Python >Quelles sont les principales différences entre globals(), locals() et vars() en Python ?
Disséquer les différences entre globals(), locals() et vars()
Dans le domaine de la manipulation de l'espace de noms de Python, il existe trois fonctions essentielles : globals(), locals() et vars(). Chacune de ces fonctions renvoie un dictionnaire, mais les différences sous-jacentes méritent un examen plus approfondi.
globals()
De manière cohérente, globals() renvoie un dictionnaire représentant l'espace de noms de l'objet. module actuel. Ce dictionnaire contient toutes les variables globales, fonctions et classes définies dans ce module.
locals()
Contrairement à globals(), locals() présente un comportement dynamique . Lorsqu'il est appelé dans une fonction, il renvoie un dictionnaire contenant les variables locales actuelles, y compris celles des variables de fermeture. Toutefois, ce dictionnaire est un instantané temporaire. Seuls les appels à locals() ou les accès à l'attribut f_locals du frame de pile courant déclenchent une mise à jour de son contenu. Les affectations au dictionnaire locals() ou à ses variables correspondantes ne font pas de mise à jour croisée.
vars()
Vars() renvoie également un dictionnaire, mais sa polyvalence s'étend au-delà des espaces de noms de module et de fonction. Lorsqu'elle est appelée sans argument, vars() agit de la même manière que locals(), renvoyant le dictionnaire de l'espace de noms actuel. Cependant, lorsqu'un objet est passé en argument, vars() fouille dans le dict de cet objet pour récupérer ses attributs.
Mises à jour et effets
Ni locals() ni vars() ne maintiennent automatiquement leurs dictionnaires à jour avec les modifications apportées à l'espace de noms. Les affectations aux variables ne mettent pas à jour les dictionnaires et, inversement, les modifications apportées aux dictionnaires ne se propagent pas aux variables. Cependant, si l'on accède à f_locals (dans le cas de locals()) ou si l'on accède au dict de l'objet (dans le cas de vars()), les dictionnaires peuvent être mis à jour.
Dans résumé, globals(), locals() et vars() fournissent un trio d'outils pour manipuler les espaces de noms en Python. Comprendre leurs différences permet aux développeurs de naviguer dans l'environnement d'exécution de Python avec précision et contrôle.
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!