logo

Variabili globali e locali in Python

In Python le variabili svolgono un ruolo chiave nella memorizzazione e nella gestione dei dati. Il loro comportamento e la loro accessibilità dipendono da dove sono definiti nel programma. In questo articolo esploreremo le variabili globali e locali, come funzionano e gli scenari comuni con esempi.

Variabili locali

Le variabili locali vengono create all'interno di una funzione ed esistono solo durante la sua esecuzione. Non è possibile accedervi dall'esterno della funzione.



dimensioni dei caratteri in lattice

Esempio 1: In questo codice stiamo creando e accedendo a una variabile locale all'interno di una funzione.

Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet() 

Produzione
Hello from inside the function! 

Spiegazione: Definiamo salutare() con una variabile locale msg e stamparlo. Poiché msg esiste solo durante l'esecuzione della funzione, è possibile accedervi all'interno della funzione. Chiamando salutare() visualizza il messaggio.

Esempio 2 : In questo esempio stiamo creando una variabile locale all'interno di una funzione e quindi tentando di accedervi all'esterno della funzione, causando un errore.



Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg) 

Produzione

Traceback (ultima chiamata per ultima):
File '/home/guest/sandbox/Solution.py' riga 6 pollici
print('Funzione esterna:' msg)
NameError: il nome 'msg' non è definito

Spiegazione: msg è una variabile locale interna salutare() ed è possibile accedervi solo da lì. Stamparlo all'esterno provoca un errore perché non esiste a livello globale.



Variabili globali

Le variabili globali vengono dichiarate all'esterno di tutte le funzioni ed è possibile accedervi ovunque nel programma, comprese le funzioni interne.

In questo esempio stiamo creando una variabile globale e quindi accedendovi sia all'interno che all'esterno di una funzione.

Python
msg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg) 

Produzione
Inside function: Python is awesome! Outside function: Python is awesome! 

Spiegazione: msg è una variabile globale accessibile sia all'interno che all'esterno di display() funzione. Chiamando display() stampa il globale msg e stampa msg al di fuori della funzione funziona come previsto.

Nota: Se una variabile non viene trovata all'interno di una funzione (ambito locale) Python la cerca automaticamente nell'ambito globale. Tuttavia, se una variabile locale ha lo stesso nome di una globale, oscurerà la variabile globale all'interno di quella funzione.

Utilizzo di variabili Locali e Globali

Se una variabile è definita sia globalmente che localmente con lo stesso nome, la variabile locale oscura la variabile globale all'interno della funzione. Le modifiche alla variabile locale non influiscono sulla variabile globale a meno che non si dichiari esplicitamente la variabile come globale.

Python
def fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s) 

Produzione
Me too. I love Geeksforgeeks 

Spiegazione: Dentro divertimento() S è una variabile locale impostata su "Anch'io". e stampa quel valore. Fuori dal globale S rimane 'I love Geeksforgeeks' quindi stampa S successivamente mostra il valore globale.

Modifica delle variabili globali all'interno di una funzione

Per impostazione predefinita non è possibile modificare una variabile globale all'interno di una funzione senza dichiararla come globale. Se provi Python genererà un errore perché tratta la variabile come locale. Per modificare una variabile globale utilizzare il comando parola chiave globale .

Senza globale (causa errore)

Python
def fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun() 

Produzione

UnboundLocalError: variabile locale "s" a cui si fa riferimento prima dell'assegnazione

Spiegazione: Inside fun() Python presuppone che s sia locale poiché proviamo a modificarlo. Ma non esistono locali prima di quella riga, quindi si verifica un errore.

Con globale (funziona correttamente)

Python
s = 'Python is great!' def fun(): global s s += ' GFG' # Modify global variable print(s) s = 'Look for GeeksforGeeks Python Section' # Reassign global print(s) fun() print(s) 

Produzione
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Spiegazione:

  • Dichiarare s come globale dice a Python di utilizzare la variabile dall'ambito globale.
  • La funzione prima aggiunge "GFG" quindi riassegna s.
  • Le modifiche persistono al di fuori della funzione.

Globale vs locale con lo stesso nome

Python
a = 1 # Global variable def f(): print('f():' a) # Uses global a def g(): a = 2 # Local shadows global print('g():' a) def h(): global a a = 3 # Modifies global a print('h():' a) print('global:' a) f() print('global:' a) g() print('global:' a) h() print('global:' a) 

Produzione
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3 

Spiegazione:

  • f() stampa una a globale senza modificarla.
  • g() crea un locale a lasciando intatto quello globale.
  • h() dichiara a come globale e lo modifica.

Variabile locale vs variabile globale

Base di confronto Variabile globale Variabile locale
DefinizioneDichiarato fuori dalle funzioniDichiarato all'interno di un file Functions
Tutta la vitaCreato all'avvio del programma e distrutto al termineCreato quando la funzione viene chiamata e distrutto quando ritorna
Condivisione dei datiCondiviso in tutte le funzioniNon condiviso; esiste solo nell'ambito della sua funzione
AmbitoÈ possibile accedervi ovunque nel programmaAccessibile solo all'interno della funzione
Parametri necessariNon è necessario il passaggio di parametriPuò essere creato tramite parametri o assegnazioni all'interno della funzione
MagazzinaggioGestito nello spazio dei nomi globale (posizione di memoria non fissa)Memorizzato nello spazio dei nomi locale della funzione (stack frame)
ValoreLe modifiche riguardano l'intero programmaLe modifiche sono locali e non influiscono su altre funzioni