V tomto kurzu se dozvíte o globálních proměnných Pythonu, místních proměnných, nelokálních proměnných a o tom, kde je použít.
Video: Python Local and Global Variables
Globální proměnné
V Pythonu je proměnná deklarovaná mimo funkci nebo v globálním rozsahu známá jako globální proměnná. To znamená, že ke globální proměnné lze přistupovat uvnitř nebo vně funkce.
Podívejme se na příklad toho, jak se v Pythonu vytváří globální proměnná.
Příklad 1: Vytvoření globální proměnné
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Výstup
x inside: global x outside: global
Ve výše uvedeném kódu jsme vytvořili x jako globální proměnnou a definovali a foo()
pro tisk globální proměnné x. Nakonec zavoláme foo()
který vytiskne hodnotu x.
Co když chcete změnit hodnotu x uvnitř funkce?
x = "global" def foo(): x = x * 2 print(x) foo()
Výstup
UnboundLocalError: místní proměnná 'x' odkazovaná před přiřazením
Výstup ukazuje chybu, protože Python zachází s x jako s lokální proměnnou a x také není definováno uvnitř foo()
.
Aby to fungovalo, používáme global
klíčové slovo. Navštivte globální klíčové slovo Pythonu a dozvíte se více.
Místní proměnné
Proměnná deklarovaná uvnitř těla funkce nebo v místním oboru je známá jako místní proměnná.
Příklad 2: Přístup k místní proměnné mimo obor
def foo(): y = "local" foo() print(y)
Výstup
NameError: název 'y' není definován
Výstup ukazuje chybu, protože se pokoušíme přistupovat k místní proměnné y v globálním rozsahu, zatímco lokální proměnná funguje pouze uvnitř foo()
nebo v lokálním rozsahu.
Podívejme se na příklad, jak se v Pythonu vytváří lokální proměnná.
Příklad 3: Vytvoření místní proměnné
Normálně deklarujeme proměnnou uvnitř funkce, abychom vytvořili lokální proměnnou.
def foo(): y = "local" print(y) foo()
Výstup
místní
Pojďme se podívat na dřívější problém, kde x byla globální proměnná a my jsme chtěli upravit x uvnitř foo()
.
Globální a lokální proměnné
Zde si ukážeme, jak používat globální proměnné a lokální proměnné ve stejném kódu.
Příklad 4: Použití globálních a lokálních proměnných ve stejném kódu
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Výstup
globální globální místní
Ve výše uvedeném kódu deklarujeme x jako globální a y jako lokální proměnnou v foo()
. Potom použijeme operátor násobení *
k úpravě globální proměnné x a vytiskneme x i y.
Po vyvolání se foo()
hodnota x stane, global global
protože jsme použili x * 2
k tisku dvakrát global
. Poté vytiskneme hodnotu lokální proměnné y tj local
.
Příklad 5: Globální proměnná a místní proměnná se stejným názvem
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Výstup
místní x: 10 globální x: 5
Ve výše uvedeném kódu jsme použili stejný název x pro globální proměnnou i lokální proměnnou. Když vytiskneme stejnou proměnnou, získáme jiný výsledek, protože proměnná je deklarována v obou oborech, tj. Lokální obor uvnitř foo()
a globální obor venku 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
Ve výše uvedeném kódu je vnořená inner()
funkce. nonlocal
K vytvoření nelokální proměnné používáme klíčová slova. inner()
Funkce je definována v rámci jiné funkce outer()
.
Poznámka : Pokud změníme hodnotu nelokální proměnné, změny se objeví v lokální proměnné.