logo

Globala och lokala variabler i Python

I Python är variabler en nyckelroll i lagring och hantering av data. Deras beteende och tillgänglighet beror på var de definieras i programmet. I den här artikeln kommer vi att utforska globala och lokala variabler hur de fungerar och vanliga scenarier med exempel.

Lokala variabler

Lokala variabler skapas i en funktion och finns endast under dess exekvering. De kan inte nås utanför funktionen.



invända mot json i java

Exempel 1: I den här koden skapar vi och får åtkomst till en lokal variabel i en funktion.

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

Produktion
Hello from inside the function! 

Förklaring: Vi definierar hälsa() med en lokal variabel msg och skriva ut det. Eftersom MSG endast finns under funktionens exekvering har den åtkomst till funktionen. Kallelse hälsa() Visar meddelandet.

Exempel 2 : I det här exemplet skapar vi en lokal variabel i en funktion och försöker sedan komma åt den utanför funktionen som orsakar ett fel.



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

Produktion

Traceback (senaste samtalet sist):
Fil '/home/guest/sandbox/solution.py' rad 6 i
tryck ('extern funktion:' msg)
NAMEError: Namn 'MSG' är inte definierat

Förklaring: MSG är en lokal variabel inuti hälsa() och kan bara nås där. Att skriva ut det utanför orsakar ett fel eftersom det inte finns globalt.



Globala variabler

Globala variabler deklareras utanför alla funktioner och kan nås var som helst i programmet inklusive inre funktioner.

I det här exemplet skapar vi en global variabel och får sedan åtkomst till den både inom och utanför en funktion.

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

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

Förklaring: MSG är en global variabel tillgänglig både inom och utanför visa() fungera. Kallelse visa() skriver ut det globala msg och tryckning msg Utanför funktionen fungerar som förväntat.

Notera: Om en variabel inte finns i en funktion (lokal omfattning) letar Python automatiskt efter den i global omfattning. Men om en lokal variabel har samma namn som en global kommer den att skugga global variabel inuti den funktionen.

Användning av lokala och globala variabler

Om en variabel definieras både globalt och lokalt med samma namn är den lokala variabeln den globala variabeln inuti funktionen. Ändringar av den lokala variabeln påverkar inte den globala variabeln såvida du inte uttryckligen förklarar variabeln som global.

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

Utgång
Me too. I love Geeksforgeeks 

Förklaring: Inuti gyckel() s är en lokal variabel inställd på "mig också." och skriver ut det värdet. Utanför det globala s Resters 'I Love GeeksForgeeks' So Printing s därefter visar det globala värdet.

Modifiera globala variabler i en funktion

Som standard kan man inte ändra en global variabel i en funktion utan att förklara den som global. Om du försöker python kommer att höja ett fel eftersom det behandlar variabel som lokal. För att ändra en global variabel använd global nyckelord .

Utan global (orsaker fel)

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

Produktion

Obefläckat lokalError: Lokal variabel 'hänvisas före uppdraget

Förklaring: Inside Fun () Python antar att s är lokalt eftersom vi försöker ändra det. Men det finns inga lokala s innan den linjen så ett fel uppstår.

Med Global (fungerar korrekt)

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) 

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

Förklaring:

  • Att förklara S som Global berättar för Python att använda variabeln från det globala omfånget.
  • Funktionen lägger först "GFG" och tilldelar sedan s.
  • Förändringar kvarstår utanför funktionen.

Global vs Local med samma namn

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) 

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

Förklaring:

  • f () skriver ut Global A utan att ändra det.
  • g () skapar en lokal A som lämnar global en orörd.
  • h () förklarar A som global och modifierar den.

Lokal variabel vs global variabel

Jämförelse Global variabel Variabel
DefinitionFörklaras utanför funktionernaFörklaras i en funktion
LivstidSkapas när programmet startar och förstörs när det slutarSkapas när funktionen kallas och förstörs när den återvänder
DatadelningDelas över alla funktionerInte delad; finns endast inom dess funktion
OmfattningKan nås var som helst i programmetEndast tillgängligt i funktionen
Parametrar behövsIngen parameter passerarKan skapas genom parametrar eller tilldelningar i funktionen
LagringHanteras i det globala namnområdet (inte fast minnesplats)Lagrad i funktionens lokala namnområde (Stack Frame)
VärdeFörändringar påverkar hela programmetFörändringar är lokala och påverkar inte andra funktioner