Comprendre les différences entre globals(), locals() et vars()
En Python, globals(), locals() , et vars() sont des fonctions qui fournissent des informations sur l'espace de noms du programme actuel. Explorons leurs distinctions :
globals()
-
Objectif : renvoie un dictionnaire de l'espace de noms global.
-
Comportement : cohérent, renvoyant toujours le dictionnaire d'espace de noms pour le courant module.
locals()
-
Objectif : acquiert un dictionnaire représentant l'espace de noms actuel.
-
Comportement : Dynamique, en fonction de l'appelant context.
-
À l'intérieur d'une fonction : Renvoie un dictionnaire contenant les variables locales actuelles et toutes les variables de fermeture. Plusieurs appels dans le même cadre de pile renvoient le même dictionnaire en raison de son association avec l'attribut f_locals de l'objet cadre. Les mises à jour de ce dictionnaire sont reflétées dans l'espace de noms local, mais l'attribution de valeurs directement au dictionnaire ne modifie pas les variables locales correspondantes.
-
En dehors d'une fonction : renvoie le dictionnaire réel qui sert de espace de noms actuel. Les modifications apportées à ce dictionnaire sont synchronisées avec l'espace de noms, et vice versa.
vars()
-
Objectif : Accepte un objet comme argument et renvoie l'attribut dict de celui-ci object.
-
Comportement :
- Sans argument, il renvoie le dict de l'espace de noms actuel (similaire aux locaux () en dehors d'une fonction).
- Lorsqu'un objet est fourni, il récupère le __dict__ de l'objet, contenant généralement son attribut data.
- Les mises à jour du dictionnaire renvoyé influencent les attributs de l'objet, et inversement, les modifications apportées aux attributs de l'objet sont reflétées dans le dictionnaire.
Remarque clé :
Le comportement de locals() et vars() peut varier selon les versions et implémentations de Python. Dans CPython 2.x, locals() pourrait fonctionner différemment avec l'utilisation de "exec 'pass'".
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!