Ebben az oktatóanyagban megismerheti a Python globális változókat, a helyi változókat, a nem lokális változókat és azok felhasználásának helyét.
Videó: Python helyi és globális változók
Globális változók
A Pythonban a függvényen kívül vagy globális hatókörben deklarált változót globális változónak nevezzük. Ez azt jelenti, hogy egy globális változó elérhető a függvényen belül vagy kívül.
Lássunk egy példát arra, hogyan jön létre egy globális változó a Pythonban.
1. példa: Hozzon létre globális változót
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Kimenet
x belül: globális x kívül: globális
A fenti kódban hoztuk létre az x-et globális változóként, és definiáltuk a- foo()
t az x globális változó kinyomtatására. Végül meghívjuk azt, foo()
amely kinyomtatja az x értékét.
Mi van, ha meg akarja változtatni az x értékét egy függvényen belül?
x = "global" def foo(): x = x * 2 print(x) foo()
Kimenet
UnboundLocalError: a hozzárendelés előtt hivatkozott „x” helyi változó
A kimenet hibát mutat, mert a Python x-et helyi változóként kezeli, és az x szintén nincs meghatározva belül foo()
.
Ennek működéséhez a global
kulcsszót használjuk . További információkért keresse fel a Python Global Keyword webhelyet.
Helyi változók
A függvény testén belül vagy a helyi hatókörben deklarált változót lokális változónak nevezzük.
2. példa: A hatókörön kívüli helyi változó elérése
def foo(): y = "local" foo() print(y)
Kimenet
NameError: Az 'y' név nincs meghatározva
A kimenet hibát mutat, mivel egy y lokális változóhoz próbálunk hozzáférni globális hatókörben, míg a helyi változó csak belül foo()
vagy lokálisan működik .
Lássunk egy példát arra, hogyan hozható létre egy helyi változó a Pythonban.
3. példa: Helyi változó létrehozása
Normál esetben egy változót deklarálunk a függvényen belül egy helyi változó létrehozására.
def foo(): y = "local" print(y) foo()
Kimenet
helyi
Vessünk egy pillantást a korábbi problémára, ahol x globális változó volt, és módosítani akartuk x-et belül foo()
.
Globális és lokális változók
Itt bemutatjuk, hogyan használhatjuk a globális és a helyi változókat ugyanabban a kódban.
4. példa: Globális és lokális változók használata ugyanabban a kódban
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Kimenet
globális globális helyi
A fenti kódban x-et globálisnak, y-t pedig helyi változónak deklaráljuk a foo()
. Ezután a szorzás operátorral *
módosítjuk az x globális változót, és kinyomtatjuk az x-et és az y-t is.
A hívása után foo()
az x értéke global global
azért lesz, mert x * 2
kétszer használtuk a nyomtatást global
. Ezt követően kinyomtatjuk az y helyi változó értékét, azaz local
.
5. példa: Globális változó és Helyi változó azonos névvel
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Kimenet
helyi x: 10 globális x: 5
A fenti kódban ugyanazt az x nevet használtuk mind a globális, mind a helyi változóhoz. Más eredményt kapunk, amikor ugyanazt a változót kinyomtatjuk, mert a változó mindkét hatókörben deklarálva van, azaz a lokális hatókör belül foo()
és a globális hatókör kívül foo()
.
When we print the variable inside foo()
it outputs local x: 10
. This is called the local scope of the variable.
Similarly, when we print the variable outside the foo()
, it outputs global x: 5. This is called the global scope of the variable.
Nonlocal Variables
Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.
Let's see an example of how a nonlocal variable is used in Python.
We use nonlocal
keywords to create nonlocal variables.
Example 6: Create a nonlocal variable
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Output
inner: nonlocal outer: nonlocal
A fenti kódban van egy beágyazott inner()
függvény. Az általunk használt nonlocal
kulcsszavakat, hogy hozzon létre egy lokális változó. A inner()
függvény egy másik függvény hatókörében kerül meghatározásra outer()
.
Megjegyzés : Ha megváltoztatjuk egy nem lokális változó értékét, a változások a helyi változóban jelennek meg.