Funkcia nielen vykonáva akcie (ako výpis textu), ale môže aj vrátiť výsledok — hodnotu, ktorú môžeš ďalej použiť vo výpočtoch, uložiť do premennej alebo odovzdať inej funkcii.
Príkaz return
Príkaz return ukončí funkciu a odovzdá hodnotu späť volajúcemu kódu:
def zdvojnasob(x):
return x * 2
vysledok = zdvojnasob(5)
print(vysledok) # 10
Bez return by funkcia vrátila špeciálnu hodnotu None, čo znamená "nič":
def zdvojnasob_bez_return(x):
x * 2 # vypočíta, ale nevráti!
vysledok = zdvojnasob_bez_return(5)
print(vysledok) # None
Zabudnutý return je častá chyba začiatočníkov. Ak funkcia má vypočítať hodnotu, nezabudni ju vrátiť pomocou return.
Využitie návratovej hodnoty
Vrátenú hodnotu môžeš:
- Uložiť do premennej
- Použiť priamo vo výraze
- Odovzdať ako argument inej funkcii
def mocnina(zaklad, exponent):
return zaklad ** exponent
# Uloženie do premennej
osem = mocnina(2, 3)
# Priame použitie vo výraze
print(mocnina(3, 2) + mocnina(4, 2)) # 9 + 16 = 25
# Vnorené volanie
print(mocnina(mocnina(2, 2), 3)) # mocnina(4, 3) = 64
Viacnásobný return
Funkcia môže obsahovať viac príkazov return — prvý, ktorý sa vykoná, funkciu ukončí:
def je_parné(cislo):
if cislo % 2 == 0:
return True
return False
print(je_parné(4)) # True
print(je_parné(7)) # False
Príkazy return vo vetvách if/else sú čisté a prehľadné. Akonáhle Python narazí na return, funkcia sa okamžite skončí — zvyšok kódu funkcie sa nevykoná.
Vrátenie viacerých hodnôt
Python umožňuje vrátiť viacero hodnôt naraz (ako n-ticu):
def min_max(zoznam):
return min(zoznam), max(zoznam)
minimalny, maximalny = min_max([3, 1, 4, 1, 5, 9, 2, 6])
print(f"Min: {minimalny}, Max: {maximalny}") # Min: 1, Max: 9
Praktický príklad — kalkulačka
def vypocitaj_znamku(body):
if body >= 90:
return 1
elif body >= 75:
return 2
elif body >= 60:
return 3
elif body >= 45:
return 4
else:
return 5
moje_body = 78
znamka = vypocitaj_znamku(moje_body)
print(f"Za {moje_body} bodov dostaneš známku {znamka}.")
Funkcie bez návratovej hodnoty
Nie každá funkcia musí niečo vracať. Funkcie, ktoré len vykonávajú akcie (výpis, kreslenie, ukladanie), zvyčajne nemajú return:
def vypis_separátor():
print("-" * 40)
vypis_separátor() # funkcia niečo urobí, ale nič nevráti
V Pythone každá funkcia bez explicitného return vracia None. Funkcie, ktoré niečo vracajú, sa nazývajú funkcie s hodnotou (value-returning functions). Ostatné sa niekedy nazývajú procedúry.
Cvičné príklady
Čo je zlé na nasledujúcom kóde? def plocha_kruhu(r): import math plocha = math.pi * r ** 2; print(plocha)
Zobraziť odpoveď
Napíš funkciu absolútna_hodnota(x), ktorá vráti kladnú hodnotu čísla x bez použitia vstavanej funkcie abs().