logo

Variables globals i locals a Python

A Python, les variables tenen un paper clau en l’emmagatzematge i la gestió de dades. El seu comportament i l’accessibilitat depenen d’on es defineixen al programa. En aquest article explorarem les variables globals i locals com funcionen i escenaris comuns amb exemples.

Variables locals

Les variables locals es creen dins d’una funció i només existeixen durant la seva execució. No es poden accedir des de fora de la funció.



Madhubala

Exemple 1: En aquest codi creem i accedim a una variable local dins d’una funció.

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

Producció
Hello from inside the function! 

Explicació: Definim saludar () amb una variable local ms i imprimir -lo. Com que MSG només existeix durant l'execució de la funció, s'accedeix dins de la funció. Trucada saludar () Mostra el missatge.

Exemple 2 : En aquest exemple, creem una variable local dins d'una funció i, a continuació, intentem accedir -hi fora de la funció que provoca un error.



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

Producció

Traceback (la trucada més recent última):
Fitxer '/home/guest/sandbox/solution.py' línia 6 in
Imprimir ("Funció exterior:" MSG)
NameError: el nom "msg" no està definit

Explicació: MSG és una variable local a l'interior saludar () i només es pot accedir allà. Imprimir -lo fora provoca un error perquè no existeix a nivell mundial.



Variables globals

Les variables globals es declaren fora de totes les funcions i es pot accedir a qualsevol lloc del programa, incloses les funcions interiors.

En aquest exemple, estem creant una variable global i, a continuació, accedint -hi dins i fora d’una funció.

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

Producció
Inside function: Python is awesome! Outside function: Python is awesome! 

Explicació: MSG és una variable global accessible tant dins com fora del visualització () funció. Trucada visualització () imprimeix el global ms i impressió ms Fora de la funció funciona com s’esperava.

NOTA: Si no es troba una variable dins d'una funció (àmbit local) Python ho busca automàticament en àmbit global. Tanmateix, si una variable local té el mateix nom que una global, ombrejarà la variable global dins d'aquesta funció.

Ús de variables locals i globals

Si una variable es defineix tant a nivell mundial com a nivell local amb el mateix nom, la variable local ombreja la variable global dins de la funció. Els canvis a la variable local no afecten la variable global tret que declari explícitament la variable com a global.

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

Producció
Me too. I love Geeksforgeeks 

Explicació: Cap a dins diversió () s és una variable local establerta a "jo també". i imprimeix aquest valor. Fora del Global s roman 'I love geeksforgeeks', així que imprimeix s Després mostra el valor global.

Modificació de variables globals dins d'una funció

De manera predeterminada, no es pot modificar una variable global dins d'una funció sense declarar -la com a global. Si proveu que Python augmentarà un error perquè tracta la variable com a local. Per modificar una variable global, utilitzeu el Paraula clau global .

Sense global (causa un error)

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

Producció

UnboundLocalError: la variable local "S" es fa referència abans de la tasca

Explicació: Inside Fun () Python suposa que S és local, ja que intentem modificar -lo. Però no existeix cap local S abans que es produeixi un error.

Amb Global (funciona correctament)

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) 

Producció
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Explicació:

  • Declarar S com Global diu a Python que utilitzi la variable de l’àmbit global.
  • La funció primer afegeix "gfg" i després reassigna s.
  • Els canvis persisteixen fora de la funció.

Global vs Local amb el mateix nom

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) 

Producció
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3 

Explicació:

  • f () imprimeix global a sense canviar -ho.
  • g () crea un local A Leaving Global intacte.
  • h () declara A As Global i el modifica.

Variable local vs variable global

Bases de comparació Variable global Variable local
DefinicióDeclarat fora de les funcionsDeclarat dins d’una funcions
VidaCreat quan el programa s’inicia i es destrueix quan s’acabiCreat quan la funció es crida i es destrueix quan torna
Compartir de dadesCompartit entre totes les funcionsNo compartit; només existeix dins de la seva funció
ÀmbitEs pot accedir a qualsevol lloc del programaAccessible només dins de la funció
Paràmetres necessarisNo cal passar cap paràmetreEs pot crear mitjançant paràmetres o tasques dins de la funció
MagatzemGestionat a l’espai de noms global (no la ubicació de la memòria fixa)Emmagatzemat a l’espai de noms locals de la funció (fotograma de pila)
ValorarEls canvis afecten tot el programaEls canvis són locals i no afecten altres funcions