Számítógépek

Globális és helyi változók Python

Szerző: Peter Berry
A Teremtés Dátuma: 15 Július 2021
Frissítés Dátuma: 10 Lehet 2024
Anonim
Globális és helyi változók Python - Számítógépek
Globális és helyi változók Python - Számítógépek

Tartalom

Szoftverfejlesztő vagyok, nagy érdeklődéssel bír az adatelemzés és a statisztika iránt.

Globális változók azok változók amelyek a funkció hatókörén kívül vannak deklarálva, de használhatók egy függvényben. Globális változó deklarálásához és használatához használhatjuk a „global” kulcsszót a változó neve előtt.

Néhány példával próbáljuk meg jobban megérteni a fogalmat.

Változtathatóan meghatározott belső funkció és azon kívül használt

Vegye figyelembe a következő kódot.

#! / usr / bin / python3 def myFunct (): a = 20 print (a) myFunct () print (a)

A kódból NameError lesz, mivel az a változó csak a myFunct nevű függvény számára látható. A (a) nyomtatás a program vége felé sikertelen, mivel a program feltételezi, hogy a változót még nem definiálták. Az "a" változó ugyanis lokális a myFunct () nevű függvény számára.


A fenti program kimenete a következő lesz: Traceback (a legutóbbi hívás utoljára): 20 Fájl "G: workspaces py_ws MyProj org pythontutorials globalvslocal globalAndLocal.py", 13. sor nyomtatásban (a) NameError: name 'a' nincs meghatározva

Az érték beállítása és nyomtatása előtt hozzáadhatunk egy globális értéket a myFunct () -hoz, hogy a kód működőképes legyen. Vegye figyelembe az alábbi továbbfejlesztett kódot:

#! / usr / bin / python3 def myFunct (): global aa = 20 print ("Inside myfunct (): a =", a) myFunct () print ("A myFunct első hívása utáni érték: a =", a) a = 10 print ("Miután új értéket adott meg a myFuncton kívül: a =", a) myFunct () print ("Miután másodszor hívta meg a myFunctot: a =", a)

A fenti kód kimenete a következő lesz:

Inside myfunct (): a = 20 Az első értéke a myFunct első hívása után: a = 20 Miután új értéket állított be a myFuncton kívül: a = 10 Inside myfunct (): a = 20 A myFunct második hívása után: a = 20

Változtathatóan definiált külső funkció és benne használható

Vegyünk egy másik példát:


#! / usr / bin / python3 def callMe (): print (msg) msg ​​= "Hívott" msg = "Hívás ..." callMe () print (msg)

Mi fog történni, ha végrehajtjuk a kódot? Sikeresen fog futni?
A fenti kód kimenete így fog kinézni:

Traceback (a legutóbbi hívás utoljára): "G: munkaterületek py_ws MyProj org pythontutorials globalvslocal scopedOutside.py" 12. sor, a callMe () fájlban: File "G: munkaterületek py_ws MyProj org pythontutorials globalvslocal scopedOutside.py ", 8. sor, a callMe nyomtatásban UnboundLocalError: a hozzárendelés előtt hivatkozott 'msg' helyi változó

Ha alaposan megvizsgáljuk a kódot, láthatjuk, hogy az msg változóhoz a callMe függvényen kívül a „Calling” értéket rendeltük. Ezután a callMe () meghívásra kerül. Annak ellenére, hogy az msg a meghívás előtt a függvényen kívül van deklarálva, a Python „feltételezi”, hogy helyi változóra van szükségünk a callMe () belsejében az msg-hez való hozzárendelés miatt, ezért a nyomtatási utasítás dobja ezt a hibaüzenetet.

Általában egy változó, amelyet a egy függvény helyi változónak tekinthető, ha nem deklaráltuk globális változónak.


A hiba kijavításához a következőképpen kell módosítanunk a kódot:

#! / usr / bin / python3 def callMe (): globális msg print (msg) msg ​​= "Hívott" msg = "Hívás ..." callMe () print (msg)

A célnak megfelelően két külön sorban kell kinyomtatnia a "Hívás" és a "Hívott" szavakat. A fenti program kimenete a következő lesz:

Hívás ... Hívott

A beágyazott függvények belsejében található változók

Lehetséges meghatározni egy függvényt egy másik függvényen belül. Az ilyen funkciókat beágyazott függvényeknek nevezzük.

Vegye figyelembe a következő kódot:

#! / usr / bin / python3 def external (): x = 10 def internal (): globális xx = 2 print ("Mielőtt meghívnánk a belső (): x =", x) print ("A belső () hívása most .. . ") belső () nyomtatás (" A belső (): x = ", x) meghívása után külső () nyomtatás (" x fő: "+ str (x))

A fenti kód kimenete a következő lesz:

A belső () hívása előtt: x = 10 A belső () hívása most ... A belső () behívása után: x = 10 x fő: 2

A fenti programban x értéke 10 marad a külső () függvényben, függetlenül attól, hogy a belső () mit csinál a változóval. A belső () meghívása után létezik egy globális változó, amelynek értéke 2. Mivel a külső () viszont belsőnek () hívja, a main nyomtatási utasítás kinyomtatja a belső () által globális változóhoz rendelt értéket.

Lenyűgözően

Tanácsunk

A jelszóvédelem használata a OneNote iOS alkalmazásban
Telefonok

A jelszóvédelem használata a OneNote iOS alkalmazásban

Max B. .-t tart a IU tömegkommunikációjában, a MA az I of I kommunikációjában zerzett MA, é a Web ter Egyetemen folytat MBA fokozatot.A Micro oft OneNote egy ha...
Hogyan használhatjuk a Facebook-csoportokat a blog növekedéséhez
Internet

Hogyan használhatjuk a Facebook-csoportokat a blog növekedéséhez

Grafiku , üzleti tulajdono é közö égi média zakértő vagyok. Remélem, hogy tapa ztalataim ha znot fognak hozni Önnek.A hálózatépíté...