Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Ambito delle variabili locali, globali e nonlocali | Ambito delle Variabili, Funzioni Annidate e Closure
Concetti di Programmazione Funzionale in Python

bookAmbito 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 len o range.

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()
copy
  • La variabile global_var è definita nello scope globale ed è accessibile da qualsiasi punto del modulo;
  • All'interno della funzione outer, enclosing_var crea una variabile nello scope di chiusura che può essere accessibile dalle funzioni annidate;
  • La funzione annidata inner definisce local_var, che esiste solo all'interno di quella funzione e dimostra l'accesso alle variabili da tutti gli scope di chiusura;
  • La funzione len viene 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?

question mark

Cosa fa la parola chiave nonlocal in Python?

Seleziona la risposta corretta

question mark

Cos'è la regola LEGB?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 1

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 3. Capitolo 1
some-alt