Globálne kľúčové slovo v Pythone (s príkladmi)

V tomto článku sa dozviete o globálnom kľúčovom slove, globálnej premennej a o tom, kedy treba globálne kľúčové slová použiť.

Pred prečítaním tohto článku sa uistite, že máte základné informácie o globálnych, miestnych a nemenných premenných premennej Python.

Čo je globálne kľúčové slovo

V jazyku Python globalumožňuje kľúčové slovo modifikovať premennú mimo aktuálneho rozsahu. Používa sa na vytvorenie globálnej premennej a na vykonávanie zmien v lokálnom kontexte.

Pravidlá globálneho kľúčového slova

Základné pravidlá pre globalkľúčové slovo v Pythone sú:

  • Keď vytvoríme premennú vo vnútri funkcie, je predvolene lokálna.
  • Keď definujeme premennú mimo funkcie, je predvolene globálna. Nemusíte používať globalkľúčové slovo.
  • globalKľúčové slovo používame na čítanie a zápis globálnej premennej vo vnútri funkcie.
  • Použitie globalkľúčového slova mimo funkcie nemá žiadny vplyv.

Použitie globálneho kľúčového slova

Zoberme si príklad.

Príklad 1: Prístup k globálnej premennej zvnútra funkcie

 c = 1 # global variable def add(): print(c) add()

Keď spustíme vyššie uvedený program, výstup bude:

 1

Môžeme však mať niektoré scenáre, keď budeme musieť upraviť globálnu premennú zvnútra funkcie.

Príklad 2: Úprava globálnej premennej zvnútra funkcie

 c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()

Keď spustíme vyššie uvedený program, výstup zobrazí chybu:

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

Je to tak preto, lebo máme prístup iba k globálnej premennej, ale nemôžeme ju meniť z vnútra funkcie.

Riešením je použitie globalkľúčového slova.

Príklad 3: Zmena globálnej premennej z vnútra funkcie pomocou globálnej

 c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)

Keď spustíme vyššie uvedený program, výstup bude:

 Vnútri add (): 2 Hlavné: 2

Vo vyššie uvedenom programe definujeme c ako globálne kľúčové slovo vo vnútri add()funkcie.

Potom zvýšime premennú c o 1, tj c = c + 2. Potom voláme add()funkciu. Nakoniec vytlačíme globálnu premennú c.

Ako môžeme vidieť, zmenou tiež došlo na globálne premenné mimo funkcie c = 2.

Globálne premenné naprieč modulmi Pythonu

V Pythone vytvoríme jeden modul config.pyna uchovávanie globálnych premenných a zdieľanie informácií medzi modulmi Pythonu v rámci toho istého programu.

Takto môžeme zdieľať globálne premenné naprieč modulmi pythonu.

Príklad 4: Zdieľanie globálnej premennej naprieč modulmi Pythonu

Vytvorte config.pysúbor na ukladanie globálnych premenných

 a = 0 b = "empty"

Vytvorte update.pysúbor na zmenu globálnych premenných

 import config config.a = 10 config.b = "alphabet"

Vytvorte main.pysúbor na testovanie zmien hodnoty

 import config import update print(config.a) print(config.b)

Keď spustíme main.pysúbor, výstup bude

 10 abecedy

Vo vyššie uvedenom, vytvorili sme tri súbory: config.py, update.pya main.py.

Modul config.pyukladá globálne premenné a a b. V update.pysúbore importujeme config.pymodul a upravíme hodnoty a a b. Podobne v main.pysúbore, dovážame ako config.pya update.pymodul. Na záver vytlačíme a otestujeme hodnoty globálnych premenných bez ohľadu na to, či sú alebo nie sú zmenené.

Globálne v vnorených funkciách

Takto môžete použiť globálnu premennú vo vnorenej funkcii.

Príklad 5: Použitie globálnej premennej vnorenej funkcie

 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ýstup je:

 Predtým, ako zavoláte na lištu: 20 Volajúcu lištu teraz Po volaní na lištu: 20 x hlavné: 25

Vo vyššie uvedenom programe sme deklarovali globálnu premennú vo vnorenej funkcii bar(). Vo vnútri foo()funkcie x nemá žiadny vplyv na globálne kľúčové slovo.

Pred a po volaní bar()má premenná x hodnotu miestnej premennej, tj x = 20. Mimo foo()funkcie bude mať premenná x hodnotu definovanú vo bar()funkcii, tj x = 25. Je to tak preto, lebo sme pomocou globalkľúčového slova v x vytvorili globálnu premennú vo vnútri bar()funkcie (lokálny rozsah).

Ak urobíme nejaké zmeny vo vnútri bar()funkcie, zmeny sa objavia mimo lokálneho rozsahu, tj foo().

Zaujímavé články...