Python globális, helyi és nem lokális változók (példákkal)

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 globalkulcsszó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 globalazért lesz, mert x * 2ké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 nonlocalkulcsszavakat, 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.

érdekes cikkek...