Lecture Thumbnail

Funkcie II. - vrátenie výsledku a lokálny poriadok

Funkcie ti môžu výsledok nielen vypísať, ale aj vrátiť na ďalšie spracovanie. Dozvieš sa aj to, kde tvoje premenné "žijú".

Príkaz return

V minulej lekcii sme tvorili funkcie, ktoré výsledok rovno vypísali pomocou print(). To je fajn, ale čo ak chceme výsledok funkcie použiť ďalej - napríklad ho uložiť do premennej, použiť vo výpočte alebo poslať do inej funkcie? Na to slúži príkaz return.

Porovnaj tieto dve funkcie:

Na prvý pohľad vyzerajú podobne. Rozdiel sa ukáže pri ich použití:

Funkcia s return je oveľa flexibilnejšia - jej výsledok môžeme uložiť, vypísať, použiť vo výpočte alebo poslať ďalej. Funkcia s print() výsledok len zobrazí a tým to končí.

Pozor!

Keď funkcia vykoná príkaz return, okamžite sa ukončí. Akýkoľvek kód za return sa nevykoná.

Použitie return vo výpočtoch

Práve pri matematických výpočtoch sa return ukáže ako veľmi užitočný. Namiesto toho, aby sme výsledok len vypísali, tak ho vrátime a môžeme s ním ďalej pracovať.

Lokálne premenné

Keď vo vnútri funkcie vytvoríš premennú, táto premenná existuje len vo vnútri tej funkcie. Hovoríme, že je lokálna. Mimo funkcie ju Python nepozná.

Premenná vysledok vznikla vo vnútri funkcie vypocitaj() a po jej skončení zanikla. Mimo funkcie ju nenájdeš.

Prečo je to takto?

  1. Funkcie sú navrhnuté tak, aby boli nezávislé.
  2. Každá funkcia má svoj vlastný "priestor" pre premenné. Vďaka tomu môžeš v rôznych funkciách používať rovnaké názvy premenných bez toho, aby sa navzájom ovplyvňovali.

Globálne vs. lokálne premenné

Premenné vytvorené mimo funkcieglobálne - viditeľné z celého programu vrátane funkcií. Premenné vytvorené vo vnútri funkcielokálne - existujú len počas behu tej funkcie.

Funkcia vie čítať globálnu premennú, avšak nemala by ju meniť. Ak ju chceme zmeniť, je lepší postup odovzdať ju ako parameter a vrátiť novú hodnotu cez return. Takýto kód je prehľadnejší a menej náchylný na chyby.

Lokálna premenná Globálna premenná
Vytvorená vo vnútri funkcie. Vytvorená mimo akejkoľvek funkcie.
Existuje len počas behu funkcie. Existuje počas celého behu programu.
Mimo funkcie ju Python nepozná. Viditeľná aj vo vnútri funkcií.

Zopakuj si!

  1. Príkaz return vráti hodnotu z funkcie späť na miesto, kde bola zavolaná.
  2. Po vykonaní return sa funkcia okamžite ukončí.
  3. Funkcia s return je flexibilnejšia ako funkcia len s print() - jej výsledok môžeš ďalej použiť.
  4. Lokálna premenná existuje len vo vnútri funkcie, po jej skončení zanikne.
  5. Globálna premenná je viditeľná z celého programu, ale meniť ju vo funkciách nie je dobrá prax.
12. Ako hľadať a riešiť chyby v kóde - debugovanie