Maison  >  Article  >  développement back-end  >  En quoi globals(), locals() et vars() diffèrent-ils en Python ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-17 02:16:03305parcourir

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
  • 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': {...}}

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'

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!

Déclaration:
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