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știTypeError.
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.