V tomto článku se dozvíte o globálním klíčovém slově, globální proměnné a o tom, kdy použít globální klíčová slova.
Než si přečtete tento článek, ujistěte se, že máte základní informace o globálních, lokálních a nelokálních proměnných Pythonu.
Co je globální klíčové slovo
V Pythonu vám globalklíčové slovo umožňuje upravit proměnnou mimo aktuální rozsah. Používá se k vytvoření globální proměnné ak provedení změn proměnné v místním kontextu.
Pravidla globálního klíčového slova
Základní pravidla pro globalklíčové slovo v Pythonu jsou:
- Když vytvoříme proměnnou uvnitř funkce, je ve výchozím nastavení lokální.
- Když definujeme proměnnou mimo funkci, je ve výchozím nastavení globální. Nemusíte používat
globalklíčové slovo. globalKlíčové slovo používáme ke čtení a zápisu globální proměnné uvnitř funkce.- Použití
globalklíčového slova mimo funkci nemá žádný účinek.
Použití globálního klíčového slova
Vezměme si příklad.
Příklad 1: Přístup ke globální proměnné zevnitř funkce
c = 1 # global variable def add(): print(c) add()
Když spustíme výše uvedený program, výstup bude:
1
Možná však máme některé scénáře, kdy musíme změnit globální proměnnou zevnitř funkce.
Příklad 2: Úprava globální proměnné zevnitř funkce
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Když spustíme výše uvedený program, výstup zobrazí chybu:
UnboundLocalError: místní proměnná 'c' odkazovaná před přiřazením
Je to proto, že máme přístup pouze k globální proměnné, ale nemůžeme ji měnit zevnitř funkce.
Řešením je použití globalklíčového slova.
Příklad 3: Změna globální proměnné zevnitř funkce pomocí globální
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Když spustíme výše uvedený program, výstup bude:
Inside add (): 2 Hlavní: 2
Ve výše uvedeném programu definujeme c jako globální klíčové slovo uvnitř add()funkce.
Potom zvýšíme proměnnou c o 1, tj c = c + 2. Poté voláme add()funkci. Nakonec vytiskneme globální proměnnou c.
Jak můžeme vidět, změnou také došlo na globální proměnné mimo funkce c = 2.
Globální proměnné napříč moduly Pythonu
V Pythonu vytvoříme jeden modul, který config.pybude obsahovat globální proměnné a sdílet informace mezi moduly Pythonu v rámci stejného programu.
Zde je způsob, jak můžeme sdílet globální proměnné napříč moduly pythonu.
Příklad 4: Sdílejte globální proměnnou napříč moduly Pythonu
Vytvořte config.pysoubor pro uložení globálních proměnných
a = 0 b = "empty"
Vytvořte update.pysoubor, chcete-li změnit globální proměnné
import config config.a = 10 config.b = "alphabet"
Vytvořte main.pysoubor, abyste otestovali změny hodnoty
import config import update print(config.a) print(config.b)
Když spustíme main.pysoubor, výstup bude
10 abecedy
Ve výše uvedeném, vytvořili jsme tři soubory: config.py, update.pya main.py.
Modul config.pyukládá globální proměnné a a b. V update.pysouboru importujeme config.pymodul a upravíme hodnoty a a b. Podobně v main.pysouboru importujeme jak modul, config.pytak update.pymodul. Nakonec vytiskneme a otestujeme hodnoty globálních proměnných, ať už jsou či nejsou změněny.
Globální vnořené funkce
Zde je způsob, jak můžete použít globální proměnnou ve vnořené funkci.
Příklad 5: Použití globální proměnné v vnořené funkci
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)
Výstupem je:
Před voláním do baru: 20 Volající bar nyní Po volání do baru: 20 x hlavní: 25
Ve výše uvedeném programu jsme deklarovali globální proměnnou uvnitř vnořené funkce bar(). foo()Funkce Inside nemá x žádný vliv na globální klíčové slovo.
Před a po volání bar()má proměnná x hodnotu lokální proměnné, tj x = 20. Mimo foo()funkci bude mít proměnná x hodnotu definovanou ve bar()funkci, tj x = 25. Je to proto, že jsme použili globalklíčové slovo v x k vytvoření globální proměnné uvnitř bar()funkce (lokální rozsah).
Pokud provedeme nějaké změny uvnitř bar()funkce, objeví se změny mimo místní rozsah, tj foo().








