Funkce Pythonu
Funkce je blok kódu, který se spustí pouze tehdy, když je zavolán.
Do funkce můžete předávat data, známá jako parametry.
Funkce může jako výsledek vrátit data.
Vytvoření funkce
V Pythonu je funkce definována pomocí klíčového slova def :
Příklad
def my_function():
print("Hello from a function")
Volání funkce
Chcete-li volat funkci, použijte název funkce následovaný závorkou:
Příklad
def my_function():
print("Hello from a function")
my_function()
Argumenty
Informace lze předávat funkcím jako argumenty.
Argumenty jsou uvedeny za názvem funkce v závorkách. Můžete přidat tolik argumentů, kolik chcete, stačí je oddělit čárkou.
Následující příklad má funkci s jedním argumentem (fname). Když je funkce volána, předáme křestní jméno, které se používá uvnitř funkce k vytištění celého jména:
Příklad
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Argumenty jsou v dokumentaci Pythonu často zkráceny na args .
Parametry nebo argumenty?
Termíny parametr a argument lze použít pro stejnou věc: informace, které jsou předány funkci.
Z pohledu funkce:
Parametr je proměnná uvedená v závorkách v definici funkce.
Argument je hodnota, která je odeslána funkci při jejím volání.
Počet argumentů
Ve výchozím nastavení musí být funkce volána se správným počtem argumentů. To znamená, že pokud vaše funkce očekává 2 argumenty, musíte funkci volat se 2 argumenty, ne více a ne méně.
Příklad
Tato funkce očekává 2 argumenty a dostane 2 argumenty:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Příklad
Tato funkce očekává 2 argumenty, ale dostane pouze 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
Svévolné argumenty, *args
Pokud nevíte, kolik argumentů bude vaší funkci předáno, přidejte *
před název parametru v definici funkce znak.
Tímto způsobem funkce obdrží n-tici argumentů a podle toho může přistupovat k položkám:
Příklad
Pokud je počet argumentů neznámý, přidejte *
před název parametru znak:
def my_function(*kids):
print("The youngest child
is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Libovolné argumenty jsou v dokumentaci Pythonu často zkráceny na *args .
Argumenty klíčových slov
Můžete také posílat argumenty se syntaxí klíč = hodnota .
Tímto způsobem nezáleží na pořadí argumentů.
Příklad
def my_function(child3, child2, child1):
print("The youngest child
is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
Fráze Argumenty klíčových slov se v dokumentaci Pythonu často zkracuje na kwargs .
Arbitrary Keyword Arguments, **kwargs
Pokud nevíte, kolik argumentů klíčového slova bude předáno vaší funkci, přidejte dvě hvězdičky: **
před název parametru v definici funkce.
Tímto způsobem funkce obdrží slovník argumentů a může podle toho přistupovat k položkám:
Příklad
Pokud je počet argumentů klíčového slova neznámý, přidejte
**
před název parametru dvojnásobek:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
Arbitrary Kword Argumenty jsou v dokumentaci Pythonu často zkráceny na **kwargs .
Výchozí hodnota parametru
Následující příklad ukazuje, jak použít výchozí hodnotu parametru.
Pokud zavoláme funkci bez argumentu, použije výchozí hodnotu:
Příklad
def my_function(country = "Norway"):
print("I am from " +
country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Předávání seznamu jako argumentu
Do funkce můžete odeslat libovolný datový typ argumentu (řetězec, číslo, seznam, slovník atd.) a bude s ním ve funkci zacházeno jako se stejným datovým typem.
Pokud například odešlete seznam jako argument, bude to stále seznam, když dosáhne funkce:
Příklad
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
Návratové hodnoty
Chcete-li, aby funkce vrátila hodnotu, použijte return
příkaz:
Příklad
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
Prohlášení o průjezdu
function
definice nemohou být prázdné, ale pokud z nějakého důvodu máte function
definici bez obsahu, vložte ji do pass
příkazu, aby nedošlo k chybě.
Příklad
def myfunction():
pass
Rekurze
Python také přijímá rekurzi funkce, což znamená, že definovaná funkce může volat sama sebe.
Rekurze je běžný matematický a programovací koncept. To znamená, že funkce volá sama sebe. To má tu výhodu, že můžete procházet daty a dosáhnout výsledku.
Vývojář by měl být s rekurzí velmi opatrný, protože může být docela snadné sklouznout k psaní funkce, která nikdy nekončí, nebo funkce, která využívá nadměrné množství paměti nebo výkonu procesoru. Pokud je však rekurze napsána správně, může být velmi účinným a matematicky elegantním přístupem k programování.
V tomto příkladu je tri_recursion() funkce, kterou jsme definovali, aby se sama volala ("recurse"). Jako data používáme proměnnou k, která se snižuje ( -1 ) pokaždé, když opakujeme. Rekurze končí, když podmínka není větší než 0 (tj. když je 0).
Novému vývojáři může chvíli trvat, než přijde na to, jak přesně to funguje, nejlepší způsob, jak to zjistit, je otestovat a upravit.
Příklad
Příklad rekurze
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(6)