Ambito delle variabili locali, globali e nonlocali
Scorri per mostrare il menu
Comprendere come Python determina l'ambito delle variabili è fondamentale per scrivere codice chiaro e privo di errori. Python utilizza un insieme specifico di regole, note come regola LEGB, per decidere dove cercare il valore di una variabile. LEGB sta per Local, Enclosing, Global e Built-in. Quando si fa riferimento a una variabile, Python cerca il suo valore in questo ordine:
- Local: variabili definite all'interno della funzione o del metodo corrente;
- Enclosing: variabili nell'ambito della funzione racchiudente più vicina (se si utilizzano funzioni annidate);
- Global: variabili definite a livello del modulo o dichiarate globali tramite la parola chiave
global; - Built-in: nomi preassegnati in Python, come
lenorange.
Questa regola consente a Python di risolvere i nomi delle variabili in modo efficiente e aiuta a prevedere da dove proviene il valore di una variabile. A volte può essere necessario modificare variabili al di fuori dell'ambito della funzione corrente. Python mette a disposizione due parole chiave per questo: global e nonlocal. La parola chiave global permette di assegnare un valore a una variabile a livello di modulo, mentre nonlocal consente di modificare una variabile nell'ambito della funzione racchiudente più vicina che non sia globale.
123456789101112131415161718# Global scope global_var = "I am global" def outer(): # Enclosing scope enclosing_var = "I am enclosing" def inner(): # Local scope local_var = "I am local" print("Local:", local_var) print("Enclosing:", enclosing_var) # Found in enclosing scope print("Global:", global_var) # Found in global scope print("Built-in:", len([1, 2, 3])) # 'len' comes from built-in scope inner() outer()
- La variabile
global_varè definita nello scope globale ed è accessibile da qualsiasi punto del modulo; - All'interno della funzione
outer,enclosing_varcrea una variabile nello scope di chiusura che può essere accessibile dalle funzioni annidate; - La funzione annidata
innerdefiniscelocal_var, che esiste solo all'interno di quella funzione e dimostra l'accesso alle variabili da tutti gli scope di chiusura; - La funzione
lenviene utilizzata per mostrare come Python possa accedere ai nomi dallo scope built-in.
Questo mostra come Python trovi i valori delle variabili cercando negli scope locale, di chiusura, globale e built-in in quest'ordine, rendendo la risoluzione delle variabili prevedibile e organizzata.
1. Cosa fa la parola chiave nonlocal in Python?
2. Cos'è la regola LEGB?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione