ESP32 / ESP8266 MicroPython: Lambda výrazy
- August 04 2019
- ESP32, ESP8266, NodeMCU , Wemos, RTLDuino...
- 1407x Přečteno
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.