Python -muuttujilla on avainrooli tietojen tallentamisessa ja hallinnassa. Heidän käyttäytymisensä ja saavutettavuutensa riippuvat siitä, missä ne on määritelty ohjelmassa. Tässä artikkelissa tutkimme globaaleja ja paikallisia muuttujia niiden toiminnan ja yhteisten skenaarioiden kanssa esimerkeillä.
Paikalliset muuttujat
Paikalliset muuttujat luodaan funktion sisällä ja olemassa vain sen suorituksen aikana. Niihin ei voida käyttää toiminnon ulkopuolelta.
pelastaa
Esimerkki 1: Tässä koodissa luomme ja käytämme paikallista muuttujaa toiminnon sisällä.
Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet()
Tulos
Hello from inside the function!
Selitys: Määrittelemme tervehtiä() paikallisella muuttujalla msg ja tulosta se. Koska MSG on olemassa vain funktion suorituksen aikana, se pääsee funktion sisällä. Soittaminen tervehtiä() Näyttää viestin.
Esimerkki 2 : Tässä esimerkissä luomme paikallisen muuttujan toiminnon sisään ja yritämme sitten käyttää sitä virheen aiheuttaman toiminnon ulkopuolelle.
Pythondef greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg)
Tulos
Traceback (viimeisin puhelu viimeinen):
Tiedosto '/home/guest/sandbox/solution.py' rivi 6
Tulosta ('Ulkopuolinen toiminto:' MSG)
NimiError: Nimeä 'msg' ei ole määritelty
Selitys: MSG on paikallinen muuttuja sisällä tervehtiä() ja siihen pääsee vain sinne. Sen ulkopuolella tulostaminen aiheuttaa virheen, koska sitä ei ole maailmanlaajuisesti.
Globaalit muuttujat
Globaalit muuttujat julistetaan kaikkien toimintojen ulkopuolella, ja niihin pääsee mihin tahansa ohjelmaan, mukaan lukien sisätoiminnot.
Tässä esimerkissä luomme globaalin muuttujan ja pääsemme siihen sitten sekä toiminnon sisällä että sen ulkopuolella.
Pythonmsg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg)
Tulos
Inside function: Python is awesome! Outside function: Python is awesome!
Selitys: MSG on maailmanlaajuinen muuttuja, joka on saatavana sekä näyttö() toiminto. Soittaminen näyttö() tulostaa globaalin msg ja tulostaminen msg Toiminnon ulkopuolella toimii odotetusti.
Huomaa: Jos muuttujaa ei löydy toiminnon (paikallisen laajuuden) sisällä, Python etsii sitä automaattisesti globaalista laajuudesta. Jos paikallisella muuttujalla on sama nimi kuin globaali, se varjostaa globaalin muuttujan kyseisen toiminnon sisällä.
Paikallisten ja globaalien muuttujien käyttö
Jos muuttuja määritetään sekä globaalisti että paikallisesti samalla nimellä, paikallinen muuttuja varjostaa globaalin muuttujan toiminnon sisällä. Paikallisen muuttujan muutokset eivät vaikuta globaaliin muuttujaan, ellet nimenomaisesti julista muuttujaa globaaliksi.
Pythondef fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s)
Tulos
Me too. I love Geeksforgeeks
Selitys: Sisällä Hauska () s on paikallinen muuttuja, joka on myös "minä". ja tulostaa tämän arvon. Globaalin ulkopuolella s pysyy "rakastan geeksforgeeks" niin tulostamista s Myöhemmin näyttää globaalin arvon.
Globaalien muuttujien muuttaminen toiminnon sisällä
Oletusarvoisesti ei voida muokata globaalia muuttujaa funktion sisällä julistamatta sitä globaaliksi. Jos yrität Pythonia, nostat virheen, koska se kohtelee muuttujaa paikallisena. Globaalin muuttujan muokkaaminen globaali avainsana .
Ilman globaalia (aiheuttaa virheitä)
Pythondef fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun()
Tulos
UnboundLocalError: Paikallinen muuttujan viitattu ennen tehtävää
Selitys: Inside Fun () Python olettaa, että s on paikallinen, koska yritämme muokata sitä. Mutta paikallisia s ei ole ennen tätä linjaa, joten virhe tapahtuu.
Globaalilla (toimii oikein)
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)
Tulos
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section
Selitys:
- S: n julistaminen globaaliksi käskee Pythonia käyttämään muuttujaa globaalista laajuudesta.
- Toiminto liittää ensin 'GFG' sitten uudelleen.
- Muutokset pysyvät toiminnon ulkopuolella.
Globaali vs. paikallinen samalla nimellä
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)
Tulos
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3
Selitys:
- f () tulostaa globaalin A muuttamatta sitä.
- G () luo paikallisen, joka jättää globaalin, koskematon.
- H () julistaa a globaalin ja muuttaa sitä.
Paikallinen muuttuja vs. globaali muuttuja
| Vertailuperuste | Globaali muuttuja | Paikallinen muuttuja |
|---|---|---|
| Määritelmä | Ilmoitettu toimintojen ulkopuolella | Ilmoitettu toimintojen sisällä |
| Elinikäinen | Luotu, kun ohjelma alkaa ja tuhoutui, kun se päättyy | Luotu, kun funktio kutsutaan ja tuhoutuu, kun se palaa |
| Tietojen jakaminen | Jaettu kaikissa toiminnoissa | Ei jaettu; on vain sen toiminnassa |
| Laajuus | Voi käyttää missä tahansa ohjelmassa | Pääsee vain toiminnon sisällä |
| Tarvittavat parametrit | Parametrien ohittamista ei tarvita | Voidaan luoda parametrien tai tehtävien kautta toiminnon sisällä |
| Säilytys- | Hallitaan globaalissa nimitilassa (ei kiinteä muistin sijainti) | Tallennettu toiminnon paikalliseen nimitilaan (pinokehys) |
| Arvo | Muutokset vaikuttavat koko ohjelmaan | Muutokset ovat paikallisia eivätkä vaikuta muihin toimintoihin |