logo

Variables globals i locals en Python

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