En quoi globals(), locals() et vars() diffèrent-ils en Python ?

Susan Sarandon
Libérer: 2024-11-17 02:16:03
original
304 Les gens l'ont consulté

How Do globals(), locals(), and vars() Differ in Python?

Explorer les nuances de globals(), locals() et vars()

Python propose trois fonctions d'introspection qui fournissent un aperçu de la espace de noms actuel : globals(), locals() et vars(). Chacun renvoie un dictionnaire avec des informations spécifiques.

globals()

globals() renvoie systématiquement le dictionnaire de l'espace de noms du module actuel. Il donne accès à tous les noms définis globalement dans le module.

locals()

locals() est dynamique et son comportement dépend de la portée.

  • Dans une fonction : locals() renvoie un dictionnaire de l'espace de noms de la fonction. Il comprend des variables locales ainsi que des variables de fermeture au moment de l'appel. Les mises à jour du dictionnaire sont reflétées dans les variables locales. Cependant, les affectations au dictionnaire renvoyé ne modifient pas les variables locales.

Par exemple, dans une fonction :

def example():
    x = 1
    l = locals()
    l['x'] = 3
    print(x)  # Outputs 1, not 3
Copier après la connexion
  • En dehors d'une fonction : locals() renvoie le dictionnaire d'espace de noms réel. Les modifications apportées au dictionnaire sont reflétées dans l'espace de noms, et vice versa.

Par exemple :

class Test:
    a = 'one'
    huh = locals()
    b = 'two'
    huh['c'] = 'three'
    print(huh)  # Outputs {'a': 'one', 'b': 'two', 'c': 'three', 'huh': {...}}
Copier après la connexion

vars()

vars() accepte un objet comme argument et renvoie son attribut dict. En règle générale, le dict d'un objet stocke ses données d'attribut. Par conséquent, fournir un objet à vars() donne accès à ses attributs.

class Test:
    a = 'one'
    b = 'two'
    huh = vars(self)
    c = 'three'
    huh['d'] = 'four'
Copier après la connexion

Dans cet exemple, vars(self) renvoie l'attribut dict de l'instance de Test, permettant l'accès à ses attributs comme 'a', 'b' et 'c'.

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