
Peter Holmes
0
4941
1045
Lambdy v Pythonu jsou jednou z nejužitečnějších, nejdůležitějších a nejzajímavějších funkcí, o kterých byste měli vědět. Bohužel jsou také snadno nepochopitelné a mýlí se.
V tomto článku si vysvětlíme vše, co potřebujete vědět o těchto tajemných funkcích, jak je používat a proč jsou užitečné.
Než se pustíte do těchto praktických příkladů, možná budete chtít nastavit virtuální prostředí Python. Naučte se, jak používat virtuální prostředí Python Naučte se, jak používat virtuální prostředí Python Ať už jste zkušený vývojář Pythonu, nebo se teprve začínáte, nastavení virtuálního prostředí je nezbytné pro jakýkoli projekt Python. . Pokud to ani nechcete dělat, měli byste alespoň vyzkoušet tyto příklady s interaktivním online pythonovým shellem Vyzkoušejte Python ve vašem prohlížeči s těmito online interaktivními skořápkami zdarma Vyzkoušejte Python ve svém prohlížeči s těmito online online interaktivními skořápkami Ať už ' Pokud si přečtete tyto příklady Pythonu nebo si prohlédnete základy polí a seznamů, můžete si vyzkoušet kód přímo v prohlížeči. Zde jsou nejlepší online tlumočníci Pythonu, které jsme našli. .
Co je Lambda v Pythonu?
Lambda je jednoduše způsob, jak definovat funkci v Pythonu. Oni jsou někdy známí jako “lambda operátoři” nebo “lambda funkce”.
Pokud jste Python již dříve používali, pravděpodobně jste své funkce definovali pomocí def klíčové slovo a prozatím to fungovalo dobře. Tak proč existuje jiný způsob, jak udělat totéž?
Rozdíl je v tom, že lambda funkce jsou anonymní. To jsou funkce, které nemusí být pojmenovány. Používají se k vytváření malých jednorázových funkcí v případech, kdy “nemovitý” funkce by byla příliš velká a objemná.
Lambda vrací funkční objekt, který lze přiřadit proměnné. Lambdy mohou mít libovolný počet argumentů, ale mohou mít pouze jeden výraz. V lambdách nemůžete volat jiné funkce.
Nejběžnější použití pro lambda funkce je v kódu, který vyžaduje jednoduchou jednořádkovou funkci, kde by bylo zbytečné psát úplnou normální funkci. Podrobněji je to popsáno níže “A co mapa, filtr a redukce?”.
Jak používat lambdy v Pythonu
Než se podíváme na funkci lambda, podívejme se na super základní funkci definovanou “tradiční” způsob:
def add_five (number): návratové číslo + 5 print (add_five (number = 4))
Tato funkce je velmi základní, ale slouží k ilustraci lambd. Vaše může být složitější než tohle. Tato funkce přidává pět k jakémukoli číslu předanému přes číslo parametr.
Takto to vypadá jako funkce lambda:
add_five = lambda number: number + 5 print (add_five (number = 4))
Spíše než použití def, slovo lambda se používá. Nejsou vyžadovány žádné závorky, ale všechna slova následující po lambda klíčová slova jsou vytvořena jako parametry. Dvojtečka se používá k oddělení parametrů a výrazu. V tomto případě je výraz číslo + 5.
Není třeba používat vrátit se klíčové slovo-lambda to dělá za vás automaticky.
Takto byste vytvořili funkci lambda se dvěma argumenty:
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5 print (add_numbers_and_five (number1 = 4, number2 = 3))
Pokud si stále nejste jisti, co se týče lambd, další část se ponoří a pomůže vám vidět světlo.
Python Lambdas s mapou, filtrem a redukcí
Základní knihovna Pythonu má tři metody mapa, snížit, a filtr. Tyto metody jsou pravděpodobně nejlepším důvodem pro použití funkcí lambda.
mapa funkce očekává dva argumenty: funkce a seznam. Převezme tuto funkci a použije ji na každý prvek v seznamu, vrací seznam upravených prvků jako mapový objekt. seznam Funkce se používá k převodu výsledného mapového objektu zpět do seznamu.
Zde je návod, jak používat mapu bez lambda:
list1 = [2, 4, 6, 8] print (list1) def add_five (number): návratové číslo + 5 new_list = list (mapa (add_five, list1)) print (new_list)
Tato funkce mapy je docela užitečná, ale mohla by být lepší. add_five funkce je předána jako argument, ale co když nechcete vytvořit funkci pokaždé, když používáte mapu? Místo toho můžete použít lambda!
Jak vypadá stejný kód, pouze s funkcí nahrazenou lambda:
list1 = [2, 4, 6, 8] tisk (list1) new_list = list (mapa (lambda x: x + 5, list1)) tisk (new_list)
Jak vidíte, celek add_five funkce již není vyžadována. Místo toho se lambda funkce používá k udržování čistoty věcí.
S filtr funkce, proces je téměř stejný. Filtr přebírá funkci a aplikuje ji na všechny elémy v seznamu a vytvoří nový seznam pouze s prvky, které způsobily, že funkce vrátí True.
Za prvé, bez lambd:
čísla = [1, 4, 5, 10, 20, 30] tisk (čísla) def more_than_ten_func (number): if number> 10: return True true: return False new_numbers = list (filtr (větší_than_ten_func, čísla)) tisk (new_numbers )
S tímto kódem není nic špatného, ale je to trochu delší. Podívejme se, kolik řádků může lambda odstranit:
čísla = [1, 4, 5, 10, 20, 30] tisk (čísla) new_numbers = seznam (filtr (lambda x: x> 10, čísla)) tisk (new_numbers)
Funkce lambda nahradila potřebu celku more_than_ten_func! A je to provedeno pěti jednoduchými slovy. To je důvod, proč jsou lambdy silné: snižují nepořádek pro jednoduché úkoly.
Nakonec se podívejme snížit. Reduce je další skvělá funkce Pythonu. Použije postupný výpočet na všechny položky v seznamu. Můžete to použít k součtu součtu nebo vynásobení všech čísel dohromady:
z functools import snížení čísel = [10, 20, 30, 40] tisk (čísla) def léto (a, b): návrat a + b výsledek = snížení (léto, čísla) tisk (výsledek)
Tento příklad je třeba importovat snížit z functools modul, ale nebojte se, modul functools je součástí základní knihovny Python.
Příběh je velmi podobný s lambda, není potřeba žádná funkce:
z importu functoolů snížit čísla = [10, 20, 30, 40] tisk (čísla) výsledek = snížit (lambda a, b: a + b, čísla) tisk (výsledek)
Na co si dát pozor s Python Lambdas
Tyto příklady ukázaly, jak snadné funkce lambda jsou spolu s mapou, filtrem a redukcí z jádrové knihovny Python. Přesto existuje několik použití, kde lambda funkce nepomohou.
Pokud děláte něco jiného než základní úkol nebo chcete zavolat jiným způsobem, použijte normální funkci. Lambdy jsou skvělé pro jednorázové anonymní funkce, ale musí mít pouze jeden výraz. Pokud vaše lambda začne vypadat jako regulární výraz, pak je nejspíš čas se věnovat specializované metodě.
Další tipy naleznete v našem průvodci objektově orientovaným programováním v Pythonu. Průvodce pro začátečníky k programování zaměřenému na Python Průvodce pro začátečníky k objektově orientovanému programování v Pythonu Chcete-li plně využít předností Pythonu, musíte se naučit, jak Python pracuje s objektově orientované programování (OOP). a podívejte se na našeho průvodce FAQ pro začátečníky Pythonu Nejčastější dotazy týkající se programování Pythonu Nejčastější dotazy týkající se programování Python V tomto článku si projdeme vše, co potřebujete vědět o Python jako začátečník. .