Globálne, lokálne a nelokálne premenné v Pythone (s príkladmi)

V tomto tutoriáli sa dozviete o globálnych premenných Pythonu, lokálnych premenných, nelokálnych premenných a o tom, ako ich používať.

Video: Lokálne a globálne premenné Pythonu

Globálne premenné

V Pythone je premenná deklarovaná mimo funkcie alebo v globálnom rozsahu známa ako globálna premenná. To znamená, že ku globálnej premennej je možné pristupovať vo vnútri alebo mimo funkcie.

Pozrime sa na príklad toho, ako sa v Pythone vytvára globálna premenná.

Príklad 1: Vytvorenie globálnej premennej

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Výkon

 x vnútri: globálne x vonku: globálne

Vo vyššie uvedenom kóde sme vytvorili x ako globálnu premennú a definovali a foo()na tlač globálnej premennej x. Nakoniec zavoláme foo()ktoré vytlačí hodnotu x.

Čo ak chcete zmeniť hodnotu x vo vnútri funkcie?

 x = "global" def foo(): x = x * 2 print(x) foo()

Výkon

 UnboundLocalError: lokálna premenná 'x' uvedená pred priradením

Výstup ukazuje chybu, pretože Python zaobchádza s x ako s lokálnou premennou a x tiež nie je definované vo vnútri foo().

Aby to fungovalo, používame globalkľúčové slovo. Navštívte globálne kľúčové slovo Python a dozviete sa viac.

Miestne premenné

Premenná deklarovaná vo vnútri tela funkcie alebo v lokálnom rozsahu je známa ako lokálna premenná.

Príklad 2: Prístup k lokálnej premennej mimo rozsahu

 def foo(): y = "local" foo() print(y)

Výkon

 NameError: meno 'y' nie je definované

Výstup ukazuje chybu, pretože sa pokúšame získať prístup k lokálnej premennej y v globálnom rozsahu, zatiaľ čo lokálna premenná funguje iba vo vnútri foo()alebo v lokálnom rozsahu.

Pozrime sa na príklad, ako sa v Pythone vytvára lokálna premenná.

Príklad 3: Vytvorenie lokálnej premennej

Normálne deklarujeme premennú vo vnútri funkcie na vytvorenie lokálnej premennej.

 def foo(): y = "local" print(y) foo()

Výkon

 miestne

Pozrime sa na predchádzajúci problém, kde x bola globálna premenná a chceli sme vo vnútri upraviť x foo().

Globálne a lokálne premenné

Tu si ukážeme, ako používať globálne premenné a lokálne premenné v rovnakom kóde.

Príklad 4: Použitie globálnych a lokálnych premenných v rovnakom kóde

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Výkon

 globálne globálne miestne

Vo vyššie uvedenom kóde deklarujeme x ako globálnu a y ako lokálnu premennú v foo(). Potom pomocou operátora násobenia *upravíme globálnu premennú x a vytlačíme x aj y.

Po vyvolaní foo()hodnoty sa hodnota x stane, global globalpretože sme použili x * 2na tlač dvakrát global. Potom vytlačíme hodnotu lokálnej premennej y tj local.

Príklad 5: Globálna premenná a lokálna premenná s rovnakým názvom

 x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)

Výkon

 miestne x: 10 globálne x: 5

Vo vyššie uvedenom kóde sme použili rovnaký názov x pre globálnu premennú aj pre lokálnu premennú. Pri tlači tej istej premennej dostaneme iný výsledok, pretože premenná je deklarovaná v obidvoch rozsahoch, tj. Lokálny rozsah vnútri foo()a globálny rozsah vonku 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

Vo vyššie uvedenom kóde je vnorená inner()funkcia. Na nonlocalvytvorenie nelokálnej premennej používame kľúčové slová. inner()Funkcia je definovaná v rámci inej funkcie outer().

Poznámka : Ak zmeníme hodnotu nelokálnej premennej, zmeny sa objavia v lokálnej premennej.

Zaujímavé články...