Stewdent.eu
▾

Platnosť premenných

Platnosť (scope) premennej určuje, v ktorej časti programu je premenná dostupná. Lokálne premenné existujú len vo funkcii, globálne sú dostupné všade.

Posledná aktualizácia: 16. novembra 2025

★★☆☆☆ Stupeň 2computingprogrammingscopeplatnostpremenne3 min čítania

Nahlásiť chybu

Keď začneš písať väčšie programy s funkciami, narazíš na otázku: kde všade je moja premenná dostupná? Odpoveď závisí od platnosti premennej — anglicky scope.

Čo je platnosť premennej?

Platnosť určuje, v ktorej časti programu môžeš premennú používať. Mimo jej platnosti premenná jednoducho neexistuje — program ju nevidí.

Existujú dve základné úrovne platnosti:

  • Lokálna — premenná existuje len vo vnútri funkcie, kde bola vytvorená.
  • Globálna — premenná je vytvorená mimo funkcií a je dostupná v celom programe.

Lokálna platnosť

Keď vytvoríš premennú vo vnútri funkcie, táto premenná je lokálna — existuje len počas behu tej funkcie a po jej skončení zanikne.

def pozdrav():
    sprava = "Ahoj!"   # lokálna premenná
    print(sprava)

pozdrav()
# print(sprava)  # CHYBA — sprava tu neexistuje

Keby si sa pokúsil použiť sprava mimo funkcie pozdrav, Python by vypísal chybu NameError, pretože v tomto kontexte premenná neexistuje.

Poznámka

Lokálne premenné sú výhodné: rôzne funkcie môžu mať premenné s rovnakým názvom bez toho, aby si navzájom prekážali. Je to ako keby každá funkcia mala vlastný pracovný priestor.

Globálna platnosť

Premenná vytvorená na vrchnej úrovni programu (mimo akejkoľvek funkcie) je globálna — funkcie ju môžu čítať.

meno = "Tomáš"   # globálna premenná

def pozdrav():
    print(f"Ahoj, {meno}!")   # čítame globálnu premennú

pozdrav()   # vypíše: Ahoj, Tomáš!

Zmena globálnej premennej z funkcie

Ak chceš globálnu premennú nielen čítať, ale aj meniť jej hodnotu zvnútra funkcie, musíš použiť kľúčové slovo global:

skore = 0   # globálna premenná

def pridaj_bod():
    global skore   # hovoríme Pythonu, že meníme globálnu premennú
    skore = skore + 1

pridaj_bod()
pridaj_bod()
print(skore)   # vypíše: 2
Upozornenie

Príliš časté používanie global je považované za zlú prax. Robí kód ťažko čitateľným a laditeľným. Radšej hodnoty odovzdávaj cez parametre a vracaj cez return.

Čo sa stane pri konflikte názvov?

Ak existuje lokálna premenná s rovnakým názvom ako globálna, Python vždy uprednostní lokálnu:

farba = "modrá"   # globálna

def vypis_farbu():
    farba = "červená"   # lokálna — zakrýva globálnu
    print(farba)

vypis_farbu()   # vypíše: červená
print(farba)    # vypíše: modrá — globálna sa nezmenila

Prehľad pravidiel platnosti

TypKde je definovanáKde je dostupná
GlobálnaMimo funkciíVšade v programe
LokálnaVo vnútri funkcieLen v tej funkcii
Tip

Dobrým zvykom je minimalizovať globálne premenné. Program, ktorý pracuje hlavne s lokálnymi premennými a funkciami, je prehľadnejší a ľahšie sa v ňom hľadajú chyby.

Cvičné príklady

Čo vypíše nasledujúci kód? x = 10 \n def test(): \n x = 20 \n print(x) \n test() \n print(x)

Zobraziť odpoveď
Funkcia test() vypíše 20 (lokálna premenná x = 20). Potom print(x) vonku vypíše 10 (globálna premenná x = 10 sa nezmenila).

Prečo je nadmerné používanie globálnych premenných a kľúčového slova global problémom?

Zobraziť odpoveď
Globálne premenné môže meniť ktorákoľvek časť programu, čo sťažuje sledovanie toho, kde a kedy sa hodnota zmenila. Pri hľadaní chýb musíš skontrolovať celý program, nie len jednu funkciu.