globals(), locals() și vars() în Python

Returnează dicționarele cu variabilele globale, cele locale sau atributele unui obiect.

Sintaxă
globals()
locals()
vars([obiect])

Ce face globals(), locals() și vars()

globals() returnează dicționarul cu numele definite la nivelul modulului (fișierului). locals() returnează numele locale din funcția curentă (la nivelul modulului, este același lucru cu globals()).

vars(obiect) returnează dicționarul __dict__ al unui obiect: atributele lui cu valori. Fără argument, vars() este echivalent cu locals(). Funcțiile acestea sunt utile la depanare și în cod care lucrează dinamic cu nume.

Parametri

Parametru Descriere
obiect Opțional, pentru vars(): un obiect, o clasă sau un modul.

Ce returnează

Un dicționar.

Exemple

Exemplul 1: Variabilele unei funcții și ale unui obiect

def calcul(a, b):
    suma = a + b
    print(locals())

calcul(2, 3)

class Produs:
    def __init__(self):
        self.nume = "Cafea"
        self.pret = 32.9

print(vars(Produs()))
oras = "Iași"
print("oras" in globals(), globals()["oras"])

Rezultat

{'a': 2, 'b': 3, 'suma': 5}
{'nume': 'Cafea', 'pret': 32.9}
True Iași

Greșeli frecvente

  • Modifici dicționarul returnat de locals() într-o funcție și te aștepți să se schimbe variabilele. Modificările nu au efect asupra variabilelor locale.
  • Apelezi vars() pe un obiect fără __dict__ (de exemplu un număr) și primești TypeError.

Comenzi înrudite

  • dir(): Listează numele (atribute și metode) disponibile într-un obiect sau modul.
  • global și nonlocal: Permit unei funcții să modifice o variabilă din afara ei: globală (global) sau din funcția care o conține (nonlocal).
  • getattr(), setattr(), hasattr(), delattr(): Citesc, setează, verifică sau șterg un atribut al unui obiect după numele lui dat ca text.