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 global
kľúč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 global
pretože sme použili x * 2
na 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 nonlocal
vytvorenie 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.