Globální klíčové slovo Pythonu (s příklady)

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().

Zajímavé články...