Sdílejte chiptron.cz na sociálních sítích



RSS feeds

ESP32 / ESP8266 MicroPython: Lambda výrazyTisk

Níže uvedený článek je článek přeložený ze stránek dfrobot.com.

Cílem tohoto návodu je ukázat, jak lze používat lambda výrazy a jaká je jejich výhoda oproti obvyklým funkcím. Lambda výrazy jsou běžnou praxí ve spoustě programovacích jazyků. Jejich výhodou je jejich definice přímo na místě, kde je chceme použít. Není tedy nutné definovat funkci někde mimo náš výkonný kód pomocí def.

Všechny články o MicroPython a ESP32/ESP8266 najdete na https://chiptron.cz/articles.php?cat_id=23

O lambdách:
Takto vypadá obecný zápis lambda výrazu, kde args reprezentuje vstupní proměnné a expression samotný výpočet výsledku. Je možné si také všimnout povinného slova lambda a dvojtečky.
lambda args: expression
V případě více vstupních proměnných je oddělíme čárkami. Nikdy je ale neuzavírejte do závorek. Další důležitou poznámkou je, že lambdy neobsahují klíčové slovo return, ale pouze výraz, pomocí kterého je možné dojít k výsledku.
Ukázka kódu:
Jako ukázku si vytvoříme výraz, který sečte dvě vstupní proměnné a vrátí výsledek. Nejprve si ukážeme, jak by se tato funkce udělala pomocí klasické funkce.
def sum(x,y):
return (x+y)
 
result = sum (4,5)
print(result)



Obrázek 1 – Použití klasické funkce

Stejnou funkci je možné dosáhnout následujícím lambda výrazem (všimněte si oddělení vstupních parametrů čárkou):
sumLambda = lambda x,y: x+y
Nyní tento výraz zavoláme a podíváme se na výsledek.
result = sumLambda(4,5)
print(result)

V této ukázce jsme si uložili náš lambda výraz do proměnné sumLambda. Oproti klasické funkci má tento přístup nevýhodu ve snadném přepsání této proměnné jinou částí kódu a ztrátě naší funkce. Obvykle se lambdy nepřiřazují do proměnné, ale používají se přímo jako parametry některé z funkcí (např. filter, map, reduce…).


Obrázek 2 – Použití lambda výrazu

Hlavní výhodou lambda výrazů je jejich přehlednost v kódu. Jsou obvykle definovány až v okamžiku, kdy jsou potřeba.

Upozornění

Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.
10,134,220 návštěv