Nadřazené | Řízení výpočtu |
Předcházející | Funkce, Cyklus while v Pythonu |
Navazující | Počítání s čísly, Zpracování textu |
Funkce je pojmenovaný blok příkazů. Funkcím můžeme předávat argumenty. Funkce vrací návratovou hodnotu.
Definice funkce
Python nabízí celou řadu vestavěných funkcí, tedy takových, které jsou již připravené tvůrci jazyka. Příkladem je třeba funkce len
, která počítá délku řetězce.
Vlastní funkci definujeme pomocí klíčového slova def
:
Tímto jsme definovali funkci say_hello
, která má parametr name
. Funkce může mít i více parametrů.
Volání funkce
Tím, že definujeme funkci, se ještě nevykoná. Aby se funkce vykonala, musíme ji zavolat. To uděláme tak, že napíšeme jméno funkce a do závorek předáme konkrétní argument:
Některé funkce jsou bez parametrů. U jejich volání musíme závorky stále uvést, např. say_goodbye()
.
Návratová hodnota
Funkce může vracet návratovou hodnotu pomocí klíčového slova return
. Následující funkce vypočítá a vrátí faktoriál.
Takováto funkce sama o sobě nic neprovede, pouze vrátí hodnotu, se kterou můžeme dále pracovat.
factorial(5) # vypočítá hodnotu faktoriálu z 5, ale pak se tato
# hodnota nijak nepoužije
print(factorial(4)) # tentokrát výsledek výpočtu vypíšeme
x = factorial(6) # výsledek výpočtu se uloží do proměnné
print(x) # a pak třeba můžeme hodnotu proměnné vypsat
Příkaz return
ukončuje provádění funkce. Při volání následující funkce se tedy vypíše pouze foo
:
Rozdíl return a print
Častý zdroj problémů u začátečníků je správné rozlišování mezi použitím print
a return
ve funkcích.
Použití print
způsobí okamžitý výpis hodnoty, nelze však s touto hodnotou nijak dál pracovat.
Použití return
ukončí funkci a vrátí hodnotu. Ta se automaticky nevypíše, ale můžeme ji přiřadit do proměnné a dále s ní pracovat.

Rozhodovačka
Rychlé procvičování výběrem ze dvou možností.

Funkce v Pythonu (lehké)
51 zadání
Typicky zabere: 9 min
Ukázka
Která funkce může vypsat celer?Co vypíše program?x = "celer"
def cook(x):
print(x)
cook("mrkev")
Lze jednu funkci zavolat víckrát?
Funkce v Pythonu (střední)
51 zadání
Typicky zabere: 12 min
Ukázka
Je kód správně?def f:
return 5
Co vypíše program?def cook():
print("celer")
meal = cook()
print(meal)
Může f(x, y) vrátit 42?def f(x, y):
return g(x) + g(y)
def g(x):
return min(x, 21)

Funkce v Pythonu (těžké)
56 zadání
Typicky zabere: 17 min
Ukázka
Co vypíše program?def print_mean(a, b):
return (a + b) / 2
print_mean(10, 20)
Ovlivní x hodnotu f(x)?def f(x):
normalize(x)
return x
def normalize(x):
return 42
Existuje x, pro které f(x) vypíše celer?def f(x):
return x > 0 and x % 17 == 0
print("celer")

Porozumění
Prohlédněte si vypracované řešení příkladů v Pythonu či ukázkové modely. Pro každý příklad dostanete několik kontrolních otázek, které otestují vaše porozumění problému.
Funkce v Pythonu
Tato sada s motivem přípravy jídla vám pomůže prozkoumat záludnosti správného využití funkcí.

Python želva
Naprogramujte želvu, aby kreslila pěkné obrázky. Želva rozumí pokynům jako je „jdi dopředu“ či „zatoč doprava“. Programy tvoříte pomocí jazyka Python 3. Pro rozcvičení můžete použít verzi želví grafiky v grafickém programování.
Zájemci najdou více informací o želví grafice v knížce od jednoho z autorů projektu Umíme programovat.
Funkce
Želvu můžeme učit nové příkazy – na tom si dobře procvičíme funkce v Pythonu a navíc již vykreslíme zajímavé obrázky.