Za dvojtečkou následuje blok - tělo funkce. Pokud je v tělu funkce příkaz return, v tomto místě se funkce ukončí a pokračuje se dalšímy příkazy za místem, kde byla funkce volána. Pokud je za slovem return nějaký výraz, stane se návratovou hodnotou funkce. Jinak vrací funkce implicitně hodnotu None. Příklad funkce:
Platnost funkce začíná její definicí a končí do zrušení příkazem del.>>> def mocnina(x): ... return x*x ... >>> mocnina(2) 4
>>> del mocnina
>>> def vypis(cislo,*ntice): ... citac = cislo ... for i in ntice: ... citac = citac + 1 ... print "%2i:" % citac, i ... >>> vypis(5,'1','dva',3,'4') 6: 1 7: dva 8: 3 9: 4
Vpravo od implicitního parametru mohou být již jen implicitní parametry. Při volání funkce se objekty dosazují nejdříve do parametrů bez implicitních hodnot a poté do parametrů s implicitními hodotami (postupuje se zleva do prava). Z toho vyplívá, že chcete-li dosadit za implicitní parametr, musíte dosadit za všechny parametry vlevo od něj, nebo použít použít jména parametrů.
>>> def mocnina(x,y=2,z=0): ... x = x**y ... if not z: ... return x ... else: ... return "(%s)" % x ... >>> print mocnina(2),mocnina(2,3),mocnina(2,2,1) 4 8 (4)
V předcházejícím příkladě s mocninou bychom si při třetím volání funkce mohli ušetřit vyplňování druhého argumentu.>>> def funkce(a,b,c='c',d='d',e=None,f=''): ... print a,b,c,d,e ... >>> funkce(b='b',a='A',e='E') A b c d E
>>> mocnina(2,z=1) '(4)'
Poslední parametr může být parametr s dvěmi hvězdičkami. Tam se přiřazují všechny pojmenované argumenty, které jsou předány funkci "navíc" ve formě slovníku, kde klíč je jméno argumentu a hodnota je hodnota argumentu. Tento parametr musí být uveden jako poslední.>>> def moje_fce(a,b,c=5,*ostatni): ... print a,b,c ... print ostatni ... >>> moje_fce(3,4) 3 4 5 () >>> moje_fce(3,4,5) 3 4 5 () >>> moje_fce(3,4,5,6,7) 3 4 5 (6, 7)
>>> def moje_fce(a,b,c=5,*ostatni,**ostatni_pojmenovane):
... print a,b,c
... print ostatni
... print ostatni_pojmenovane
...
>>> moje_fce(3,4)
3 4 5
()
{}
>>> moje_fce(3,4,5,6,7)
3 4 5
(6, 7)
{}
>>> moje_fce(3,4,5,6,x=7)
3 4 5
(6,)
{'x': 7}
>>> moje_fce(b=3,a=4,f=5,c=6,x=7)
4 3 6
()
{'f': 5, 'x': 7}
Dalším zdrojem informací je atribut __dict__, nebo funkce dir().>>> def funkce(): ... """Tato funkce nedela nic. ... Je tu jen na ukazku docstringu.""" ... return None ... >>> funkce() >>> funkce.__doc__ 'Tato funkce nedela nic.\nJe tu jen na ukazku docstringu.'
O oběktech, atributech a metodách se pojednává v další kapitole: Třídy a objěkty
