I Python -variabler spiller en nøglerolle i lagring og styring af data. Deres opførsel og tilgængelighed afhænger af, hvor de er defineret i programmet. I denne artikel vil vi udforske globale og lokale variabler, hvordan de fungerer og almindelige scenarier med eksempler.
Lokale variabler
Lokale variabler oprettes inde i en funktion og findes kun under dens udførelse. De kan ikke fås adgang uden for funktionen.
css midterknap
Eksempel 1: I denne kode opretter vi og får adgang til en lokal variabel inde i en funktion.
Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet()
Produktion
Hello from inside the function!
Forklaring: Vi definerer hilse() med en lokal variabel MSG og udskrive det. Da MSG kun eksisterer under funktionens udførelse, har den adgang til inden for funktionen. Ringer hilse() Viser beskeden.
Eksempel 2 : I dette eksempel opretter vi en lokal variabel inde i en funktion og prøver derefter at få adgang til den uden for funktionen, der forårsager en fejl.
Pythondef greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg)
Produktion
Traceback (seneste opkald sidst):
Fil '/home/guest/sandbox/solution.py' linje 6 i
Print ('Udenfor funktion:' MSG)
NameError: Navn 'MSG' er ikke defineret
Forklaring: MSG er en lokal variabel indeni hilse() og kan kun fås der. Udskrivning af det udenfor forårsager en fejl, fordi den ikke findes globalt.
Globale variabler
Globale variabler erklæres uden for alle funktioner og kan fås adgang til hvor som helst i programmet inklusive indvendige funktioner.
I dette eksempel opretter vi en global variabel og får derefter adgang til den både i og uden for 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!
Forklaring: MSG er en global variabel tilgængelig både i og uden for vise() fungere. Ringer vise() Udskriver det globale MSG og udskrivning MSG Uden for funktionen fungerer som forventet.
Note: Hvis en variabel ikke findes i en funktion (lokalt omfang), ser Python automatisk efter den i det globale omfang. Men hvis en lokal variabel har samme navn som en global, vil den skygge den globale variabel inde i denne funktion.
Brug af lokale og globale variabler
Hvis en variabel defineres både globalt og lokalt med samme navn den lokale variabel skygger den globale variabel inde i funktionen. Ændringer i den lokale variabel påvirker ikke den globale variabel, medmindre du eksplicit erklærer variablen som global.
Pythondef fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s)
Produktion
Me too. I love Geeksforgeeks
Forklaring: Indenfor sjov() s er en lokal variabel indstillet til 'mig også.' og udskriver den værdi. Uden for det globale s forbliver 'Jeg elsker Geeksforgeeks' så udskrivning s Bagefter viser den globale værdi.
Ændring af globale variabler inde i en funktion
Som standard kan man ikke ændre en global variabel inde i en funktion uden at erklære den som global. Hvis du prøver Python, hæver en fejl, fordi den behandler variabel som lokal. For at ændre en global variabel skal du bruge Globalt nøgleord .
Uden global (forårsager fejl)
Pythondef fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun()
Produktion
UnboundLocalerror: Lokal variabel 's' henvist til før tildeling
Forklaring: Inside Fun () Python antager, at S er lokalt, da vi prøver at ændre det. Men der findes ingen lokale s før denne linje, så der opstår en fejl.
Med global (fungerer 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
Forklaring:
- At erklære S som Global fortæller Python om at bruge variablen fra det globale omfang.
- Funktionen tilføjer først 'gfg' og tildeler derefter s.
- Ændringer fortsætter uden for funktionen.
Global vs lokalt med samme navn
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
Forklaring:
- f () udskriver global a uden at ændre det.
- g () skaber en lokal A, der forlader global uberørt.
- h () erklærer en som global og ændrer den.
Lokal variabel vs global variabel
| Sammenligningsbasis | Global variabel | Lokal variabel |
|---|---|---|
| Definition | Erklæret uden for funktionerne | Erklæret inde i en funktion |
| Levetid | Oprettet, når programmet starter og ødelagde, når det slutter | Oprettet, når funktionen kaldes og ødelægges, når den vender tilbage |
| Datadeling | Delt på tværs af alle funktioner | Ikke delt; eksisterer kun inden for dens funktion |
| Omfang | Kan fås adgang overalt i programmet | Tilgængelig kun inde i funktionen |
| De nødvendige parametre | Ingen parameter, der passerer | Kan oprettes gennem parametre eller opgaver inde i funktionen |
| Opbevaring | Administreret i det globale navneområde (ikke fast hukommelsesplacering) | Gemt i funktionens lokale navneområde (stakramme) |
| Værdi | Ændringer påvirker hele programmet | Ændringer er lokale og påvirker ikke andre funktioner |