testovac.sk

Funkcia

Funkcia je podprogram, ktorý má návratovú hodnotu.

S návratovou hodnotou funkcií ste sa už stretli. Je to hodnota, ktorá vznikne zavolaním funkcie. Napríklad návratová hodnota funkcie round je číslo po zaokrúhľovaní. V kóde teda môžem zavolať funkciu round, napríklad s parametrom 3.1415 a 2, a ona mi vráti výsledok zaokrúhľovania - číslo 3.1415 zaokrúhlené na 2 desatinné miesta. Toto číslo, ktoré mi funkcia vráti je jej návratová hodnota. Návratovú hodnotu si môžem uložiť do premennej alebo ju použiť priamo v inom príkaze...

# návratovú hodnotu si uložím do premennej 'x'
x = round(3.1415, 2)

# návratovú hodnotu môžem použiť aj priamo v inom príkaze,
# takto sa návratová hodnota použije ako parameter ďalšieho príkazu...
print(round(3.14159, 2))

Návratová hodnota je teda zvyčajne výsledkom výpočtu nejakej funkcie. Aj naše podprogramy môžu mať návratovú hodnotu...

return

return je kľúčové slovo (tak, ako aj def, if, for, while, ...), ktoré označuje, že podprogram sa môže ukončiť a vrátiť návratovú hodnotu, ktorá je za ním uvedená

Ak by sme boli unavení s neustáleho písania znamienka pre sčítanie, mohli by sme si vytvoriť takúto funkciu:

def sucet(a,b):
    vysledok = a + b
    return vysledok

x = sucet(2, 10)
y = sucet(x, 20)
print(y) # vypise 32

Pozor! return označuje, že funkcia už môže ohlásiť svoju návratovú hodnotu, ak sa vykoná riadok kódu, v ktorom je slovo "return", ďalšie príkazy z funkcie sa už nevykonajú, program pokračuje tam, kde bola funkcia zavolaná...

def sucet(x, y):
    vysledok = x + y
    return vysledok    # kľúčové slovo RETURN označuje návratovú hodnotu
    # pozor! volaním RETURN sa ukončí vykonávanie procedúry
    print("tento príkaz sa nikdy nevykoná :(") # tento príkaz sa vážne nevykoná - je za 'return'

Dátový typ návratovej hodnoty

Zatiaľ poznáme dátový typ int (celé číslo) float (desatinné čislo) a str (textový reťazec).

Príkaz input() má napríklad návratovú hodnotu typu STR, je ňou práve to, čo zadal používateľ, príkaz round() má zas návratovú hodnotu typu FLOAT, vráti zadané zaokrúhlené číslo na daný počet desatinných miest... Aj naše funkcie môžu vrátiť hodnotu ktoréhokoľvek z týchto typov.

# táto funkcia má návratovú hodnotu typu 'str' (string)
def dayName(dayNumber):
    if dayNumber == 1:
        return "Monday"
    elif dayNumber == 2:
        return "Tuesday"
    elif dayNumber == 3:
        return "Wednesday"
    elif dayNumber == 4:
        return "Thursday"
    elif dayNumber == 5:
        return "Friday"
    elif dayNumber == 6:
        return "Saturday"
    elif dayNumber == 7:
        return "Sunday"
    else:
        return "Unknown"

print("Today it is", dayName(3))