Pamatuješ na funkce len(), print() nebo randrange() z modulu random?
Jsou jako kouzelná zaříkadla z knihy vázané v kůži: když víš jak se jmenují
a umíš je správně napsat, něco pro tebe udělají.
Teď postoupíme na další úroveň: vymyslíme si vlastní zaříkadla! Jak? Budeme kombinovat příkazy, které už známe.
Třeba funkce, která tě pozdraví, by mohla:
Definice funkce v Pythonu začíná klíčovým slovem def,
dále je uveden název a následují závorky (zatím prázdné).
Pak je jako po if dvojtečka a odsazené příkazy – tentokrát
příkazy, které má funkce provést.
Napiš to do programu:
def pozdrav():
    print('Ahoj!')
    print('Jak se máš?')
Tvoje první funkce je připravena!
Když ale tenhle program spustíš, nic neudělá. To proto, že tohle je jen definice funkce. Python teď ví jak pozdravit – ale neřeklo se, že to má udělat!
Na konec programu přidej volání. To už není součást funkce, ale pokračování samotného programu. Proto nesmí být odsazené:
def pozdrav():
    print('Ahoj!')
    print('Jak se máš?')
pozdrav()
Co se stane, když funkci zavoláš několikrát po sobě?
def pozdrav():
    print('Ahoj!')
    print('Jak se máš?')
pozdrav()
pozdrav()
pozdrav()
Co se stane, když volání dáš nad definici funkce, místo na konec programu?
pozdrav()
def pozdrav():
    print('Ahoj!')
    print('Jak se máš?')
Tvoje funkce se dá volat jen jako pozdrav().
Funkce ale jako len('slovo') a print(1 + 2) umí navíc pracovat s hodnotou.
Poďme teraz napisať funkciu, ktorá ťa pozdraví menom. (Uľahčíme si to použitím jazyka, ktorý nepoužíva piaty pád.)
def pozdrav(meno):
    print('Vítam ťa,', meno)
pozdrav('Ola')
pozdrav('Soňa')
pozdrav('Hubert')
pozdrav('Anička')
Jak to funguje? V definici funkce uvedeš závorkách parametr – jméno proměnné se kterou bude funkce pracovat. Hodnotu pro tenhle parametr pak zadáš při volání funkce.
Zvládneš napsat program, který se zeptá na jméno a pak tě pozdraví?
Co se stane, když funkci zavoláš bez hodnoty pro parametr?
Funkce může obsahovat jakýkoli kód.
Třeba podmíněný příkaz, if.
Příkazy po if je pak potřeba odsatit o další čtyři mezery:
def pozdrav(meno):
    print('Vitam ťa,', meno)
    if meno == 'Ola':
        print('Ty umíš programovať!')
pozdrav('Hubert')
pozdrav('Ola')
pozdrav('Soňa')
Další věc, kterou funkce jako len umí, je vrátit výsledek:
delka = len('Ola')
print(delka)        # napíše: 3
Jak na to, kdybys takovou funkci chtěla napsat?
V definici funkce můžeš použít příkaz return.
Ten funkci okamžitě ukončí a vrátí danou hodnotu:
def dvojnasobek(x):
    return x * 2
print(dvojnasobek(42))
Zkus se zamyslet, jak napsat funkci, která vrátí pátý pád nějakého jména. Třeba:
paty_pad('Ola') → 'Olo'paty_pad('Soňa') → 'Soňo'paty_pad('Hubert') → 'Huberte'Tohle je velice složitý úkol, tak si ho trochu zjednodušíme. Funkce by měla dělat tohle:
Hubertea:o místo posledního písmenkadef paty_pad(jmeno):
    if jmeno == 'Hubert':
        return 'Huberte'
    elif jmeno[-1] == 'a':
        return jmeno[:-1] + 'o'
    else:
        return jmeno
Dokážeš změnit funkci pozdrav, aby zdravila v češtině?
Můžeš na to použít funkci paty_pad.
Co bylo nového tentokrát?
return ukončí funkci a vrátí hodnotu