2.14. Definování funkcí¶
Funkce zabaluje blok kódu pod jeden název, takže jej lze volat z mnoha míst. Kdekoli se výpočet, akce nebo ucelený kus práce objeví více než jednou, funkce z toho udělá jedinou pojmenovanou věc.
Klíčové slovo je def:
def greet(name):
print("hello,", name)
greet("Alice")
greet("Bob")
Výstup:
hello, Alice
hello, Bob
Řádek začínající def je definice – vytvoří funkci, ale nespustí její tělo. Volání greet("Alice") je to, co spustí odsazený blok.
2.14.1. Parametry a argumenty¶
Názvy v závorkách na řádku def jsou parametry – zástupné symboly pro hodnoty, které volající dodá. Skutečné předané hodnoty jsou argumenty. Funkce může přijímat nula nebo více parametrů:
def square(x):
return x * x
def add(a, b):
return a + b
def is_even(n):
return n % 2 == 0
Volání s nesprávným počtem argumentů okamžitě vyvolá TypeError.
2.14.2. return¶
Příkaz return okamžitě ukončí funkci a předá hodnotu zpět volajícímu:
def absolute(x):
if x < 0:
return -x
return x
Funkce, která nikdy nedosáhne return (nebo má holý return bez hodnoty), vrací None:
>>> def shout(text):
... print(text.upper())
...
>>> result = shout("hi")
HI
>>> print(result)
None
Funkce může mít několik příkazů return; vyhrává ten první dosažený a zbytek těla se přeskočí.
2.14.2.1. Vracení více hodnot¶
Python vrací jeden objekt na volání, ale tímto objektem může být tuple – a volající jej může na místě rozbalit:
def minmax(values):
return (min(values), max(values))
lo, hi = minmax([3, 1, 4, 1, 5, 9])
Závorky kolem návratové hodnoty jsou nepovinné; return a, b a return (a, b) jsou totéž.
2.14.3. Dokumentační řetězce¶
Řetězcový literál umístěný jako první příkaz těla funkce je docstring. Ukládá se do objektu funkce a je tím, co zobrazuje help():
def scale(value, factor):
"""Multiply ``value`` by ``factor`` and return the result."""
return value * factor
IDE zobrazuje dokumentační řetězce v nápovědách, když kurzor najede na název funkce, takže i jednořádkové shrnutí se vyplatí. Řetězce v trojitých uvozovkách umožňují docstringu zabírat více řádků, když je užitečné více podrobností.
2.14.4. Konvence pojmenování¶
Názvy funkcí používají snake_case – malá slova oddělená podtržítky. Název by měl popisovat, co funkce dělá:
Dobře:
read_temperature,parse_header,is_valid.Vyhněte se:
do_stuff,handle1,temp_func.
Úvodní podtržítko (_helper) označuje funkci jako interní pro její modul. Tato konvence je široce respektována, ale Pythonem není vynucována.