Vytvářet v kódu funkce umožňuje dnes každý programovací jazyk. Funkce je jakýsi úsek programu, který můžeme z jiné části programu zavolat jeho jménem.
Pythonu funkci definujeme takto:
def jméno(parametry):
tělo funkce
- def značí to, že definujeme nějakou funkci.
- parametry jsou předávány (viz. níže).
Takto vypadá jednoduchá funkce hello_world:
def hello_world(pozdrav):
print pozdrav
Když do proměnné pozdrav uložíme nějaký text - pozdrav = "Ahoj svete!", poté zavoláme na funkci - hello_world(pozdrav), vypíše nám automaticky text, jelikož je to funkce.
- Parametrů může být více, oddělujeme je čárkami.
Funkce může mít návratovou hodnotu. Takovou návratovou hodnotu z funkce vrátíme pomocí klíčového slova return.
Ukážeme si to na funkci pro výpočet faktorialu:
def sqrt(x):
..epsilon = 0.0001 # pozadovana presnost
..g = 1.0
....while abs(g ** 2 - x) > epsilon:
......g = (g + x / g)/2
....return g
Ovšem tím možnosti parametrů funkcí v Pythonu nekončí. Parametrům můžeme pomocí symbolu "="
přiřadit výchozí hodnotu....
kdo = "Táta"
def prace(kdo,co="dřevo"):
...print kdo+" uklízí "+co #Vypíše Táta uklízí dřevo.
Pokud při definování funkce bude poslední poziční parametr začínat znakem "*", bude do takového parametru přiřazeno pole obsahující všechny zbývající poziční parametry.
Podobně pokud poslední parametr funkce bude začínat "**", přiřadí do něj Python při volání funkce slovník obsahující všechny parametry zadané názvem, jejichž název neodpovídá žádnému běžnému parametru.
def funkce(*pozicni, **slovnikove):
..print "pozicni: ", pozicni
..print "slovnikove: ", slovnikove
...po zavolání...
>>> funkce(1,2,3, a="abraka", d="dabra")
pozicni: (1, 2, 3)
slovnikove: {'a': 'abraka', 'd': 'dabra'}
- Tuto syntaxi je možné použít i obráceně, pro volání funkce.
Anonymní funkce
Python dále zavádí klíčové slovo lambda, pomocí kterého je možné definovat takzvanou anonymní funkci. Taková funkce smí obsahovat pouze jeden výraz, žádné složitější programátorské konstrukce. Funkce se po definici chovají jako běžné proměnné, nejzajímavější vlastností je, že je můžeme předávat jiným funkcím jako parametry.
def vyhovuje(s, f):
..for i in s:
....if f(i):
......print i
Obdobně můžeme definovat funkci, která vrací funkci:
def delitelne(n):
..return lambda x: x % n == 0
- Přeji hodně úspěchů při programování. -