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ó.
Pythondef 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ó.
Pythonmsg = '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.
Pythondef 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)
Pythondef 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)
Pythons = '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
Pythona = 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 funcions | Declarat dins d’una funcions |
| Vida | Creat quan el programa s’inicia i es destrueix quan s’acabi | Creat quan la funció es crida i es destrueix quan torna |
| Compartir de dades | Compartit entre totes les funcions | No compartit; només existeix dins de la seva funció |
| Àmbit | Es pot accedir a qualsevol lloc del programa | Accessible només dins de la funció |
| Paràmetres necessaris | No cal passar cap paràmetre | Es pot crear mitjançant paràmetres o tasques dins de la funció |
| Magatzem | Gestionat 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) |
| Valorar | Els canvis afecten tot el programa | Els canvis són locals i no afecten altres funcions |