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.
Pythondef 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.
Pythonmsg = '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.
Pythondef 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)
Pythondef 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)
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)
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
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)
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 |
|---|---|---|
| Definition | Förklaras utanför funktionerna | Förklaras i en funktion |
| Livstid | Skapas när programmet startar och förstörs när det slutar | Skapas när funktionen kallas och förstörs när den återvänder |
| Datadelning | Delas över alla funktioner | Inte delad; finns endast inom dess funktion |
| Omfattning | Kan nås var som helst i programmet | Endast tillgängligt i funktionen |
| Parametrar behövs | Ingen parameter passerar | Kan skapas genom parametrar eller tilldelningar i funktionen |
| Lagring | Hanteras i det globala namnområdet (inte fast minnesplats) | Lagrad i funktionens lokala namnområde (Stack Frame) |
| Värde | Förändringar påverkar hela programmet | Förändringar är lokala och påverkar inte andra funktioner |