Variables globals de Python són aquells que no estan definits dins de cap funció i tenen un abast global mentre que Python variables locals són aquells que es defineixen dins d'una funció i el seu abast es limita només a aquesta funció. En altres paraules, podem dir que les variables locals només són accessibles dins de la funció en què s'ha inicialitzat, mentre que les variables globals són accessibles a tot el programa i dins de cada funció.
Variables locals de Python
Les variables locals en Python són aquelles que s'inicien dins d'una funció i pertanyen només a aquesta funció en particular. No es pot accedir a cap lloc fora de la funció. Vegem com crear una variable local.
Creació de variables locals en Python
Definició i accés a variables locals
Python 3
cadena de int
def> f():> > # local variable> > s> => 'I love Geeksforgeeks'> > print> (s)> # Driver code> f()> |
>
>Sortida
I love Geeksforgeeks>
Es pot utilitzar una variable local fora d'una funció?
Si intentarem utilitzar aquesta variable local fora de la funció, veurem què passarà.
Python 3
def> f():> > > # local variable> > s> => 'I love Geeksforgeeks'> > print> (> 'Inside Function:'> , s)> # Driver code> f()> print> (s)> |
>
>
Sortida:
NameError : name 's' is not defined>
Variables globals de Python
Són aquells que es defineixen fora de qualsevol funció i que són accessibles a tot el programa, és a dir, dins i fora de cada funció. Vegem com crear una variable global de Python.
Crea una variable global en Python
Definició i accés a variables globals de Python.
Python 3
# This function uses global variable s> def> f():> > print> (> 'Inside Function'> , s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> print> (> 'Outside Function'> , s)> |
formes normals
>
>Sortida
Inside Function I love Geeksforgeeks Outside Function I love Geeksforgeeks>
La variable s es defineix com la variable global i s'utilitza tant dins de la funció com fora de la funció.
Nota: Com que no hi ha locals, s'utilitzarà el valor dels globals, però assegureu-vos que tant les variables locals com les globals han de tenir el mateix nom.
Per què utilitzem variables locals i globals a Python?
Ara, què passa si hi ha una variable de Python amb el mateix nom inicialitzada dins d'una funció així com globalment? Ara sorgeix la pregunta, la variable local tindrà algun efecte sobre la variable global o viceversa, i què passarà si canviem el valor d'una variable dins de la funció f()? Afectarà també els globals? Ho provem en el següent fragment de codi:
Exemple
Si també es defineix una variable amb el mateix nom dins de l'abast de la funció, només imprimirà el valor donat dins de la funció i no el valor global.
Python 3
# This function has a variable with> # name same as s.> def> f():> > s> => 'Me too.'> > print> (s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> print> (s)> |
>
>Sortida
Me too. I love Geeksforgeeks>
Ara, què passa si intentem canviar el valor d'una variable global dins de la funció? Vegem-ho amb l'exemple següent.
Python 3
bucle foreach mecanografiat
# This function uses global variable s> def> f():> > s> +> => 'GFG'> > print> (> 'Inside Function'> , s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> |
>
>
Sortida:
UnboundLocalError : local variable 's' referenced before assignment>
Perquè el programa anterior funcioni, hem d'utilitzar la paraula clau global a Python. Vegem quina és aquesta paraula clau global.
La paraula clau global
Només hem d'utilitzar paraula clau global en una funció si volem fer assignacions o canviar la variable global. global no és necessari per imprimir i accedir. Python suposa que volem una variable local a causa de l'assignació a s dins de f(), de manera que la primera instrucció llança el missatge d'error. Qualsevol variable que es canviï o es creï dins d'una funció és local si no s'ha declarat com a variable global. Per dir-li a Python que volem utilitzar la variable global, hem d'utilitzar la paraula clau global , com es pot veure en l'exemple següent:
Exemple 1: Utilitzant la paraula clau global de Python
Python 3
actualitzar en sql amb join
# This function modifies the global variable 's'> def> f():> > global> s> > s> +> => ' GFG'> > print> (s)> > s> => 'Look for Geeksforgeeks Python Section'> > print> (s)> # Global Scope> s> => 'Python is great!'> f()> print> (s)> |
>
>Sortida
Python is great! GFG Look for Geeksforgeeks Python Section Look for Geeksforgeeks Python Section>
Ara no hi ha ambigüitat.
Exemple 2: Ús de variables locals i globals de Python
Python 3
a> => 1> # Uses global because there is no local 'a'> def> f():> > print> (> 'Inside f() : '> , a)> # Variable 'a' is redefined as a local> def> g():> > a> => 2> > print> (> 'Inside g() : '> , a)> # Uses global keyword to modify global 'a'> def> h():> > global> a> > a> => 3> > print> (> 'Inside h() : '> , a)> # Global scope> print> (> 'global : '> , a)> f()> print> (> 'global : '> , a)> g()> print> (> 'global : '> , a)> h()> print> (> 'global : '> , a)> |
>
>Sortida
global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3>
Diferència b/n variable local vs. Variables globals
Base de comparació | Variable global | Variable local |
Definició | declarades fora de les funcions | declarades dins de les funcions |
Tota una vida | Es creen quan comença l'execució del programa i es perden quan s'acaba el programa | Es creen quan la funció comença la seva execució i es perden quan finalitza la funció |
Compartició de dades | Ofereix l'intercanvi de dades | No ofereix compartir dades |
Àmbit | Es pot accedir a tot el codi | Només es pot accedir dins de la funció |
Paràmetres necessaris | no és necessari passar paràmetres | cal passar paràmetres |
Emmagatzematge | Una ubicació fixa seleccionada pel compilador | Es mantenen a la pila |
Valor | Un cop canvia el valor, es reflecteix a tot el codi | un cop canviada la variable no afecta altres funcions del programa |