En nybörjarguide till förståelse av Python Lambda-funktioner
Lambdas i Python är en av de mest användbara, viktiga och intressanta funktionerna att veta om. Tyvärr är de också lätta att missförstå och bli felaktiga.
I den här artikeln kommer vi att förklara allt du behöver veta om dessa mystiska funktioner, hur man använder dem och varför de är användbara.
Innan du dyker in i de här praktiska exemplen kanske du vill skapa en virtuell Python-miljö. Lär dig hur du använder Python Virtual Environment Lär dig hur du använder Python Virtual Environment Oavsett om du är en erfaren Python-utvecklare eller har du precis börjat, lär dig hur Att installera en virtuell miljö är avgörande för ett Python-projekt. Läs mer . Om du inte ens vill göra det borde du åtminstone prova dessa exempel med ett interaktivt online Python-skal. Försök Python i din webbläsare. Med dessa gratis online interaktiva shells Prova Python i din webbläsare med dessa gratis online interaktiva shells. Oavsett om du är " gå igenom dessa Python-exempel eller granska grunderna i arrays och listor kan du testa koden direkt i din webbläsare. Här är de bästa Python tolkarna vi hittat. Läs mer .
Vad är en Lambda i Python?
En lambda är helt enkelt ett sätt att definiera en funktion i Python. De är ibland kända som “lambda operatörer” eller “lambda funktioner”.
Om du har använt Python tidigare har du förmodligen definierat dina funktioner med hjälp av def sökord, och det har fungerat bra för dig hittills. Så varför finns det ett annat sätt att göra samma sak?
Skillnaden är att lambdafunktionerna är anonyma. Menar att de är funktioner som inte behöver namnges. De är vana vid att skapa små, engångsfunktioner i fall där a “verklig” funktionen skulle vara för stor och skrymmande.
Lambdas returnerar ett funktionsobjekt som kan tilldelas en variabel. Lambdas kan ha ett antal argument, men de kan bara ha ett uttryck. Du kan inte ringa andra funktioner i lambdas.
Den vanligaste användningen för lambda-funktioner är i kod som kräver en enkel enlinjefunktion, där det skulle vara overkill att skriva en fullständig normal funktion. Detta beskrivs mer detaljerat nedan, under “Vad om karta, filtrera och minska?”.
Hur man använder lambdas i python
Innan vi tittar på en lambda-funktion, låt oss titta på en super grundläggande funktion som definierar “traditionell” sätt:
def add_five (antal): returnummer + 5 print (add_five (number = 4))
Denna funktion är väldigt grundläggande, men den tjänar till att illustrera lambdas. Din kan vara mer komplex än detta. Denna funktion lägger till fem till ett tal som skickas till det via siffra parameter.
Så här ser det ut som en lambda-funktion:
add_five = lambda nummer: nummer + 5 print (add_five (number = 4))
Snarare än att använda def, ordet lambda är använd. Inga parenteser krävs, men några ord som följer lambda nyckelord skapas som parametrar. Kolon används för att separera parametrarna och uttrycket. I detta fall är uttrycket nummer + 5.
Det finns ingen anledning att använda lämna tillbaka nyckelord - lambda gör det här automatiskt för dig.
Så här skapar du en lambda-funktion med två argument:
add_numbers_and_five = lambda nummer1, nummer2: nummer1 + nummer2 + 5 skriv ut (add_numbers_and_five (number1 = 4, number2 = 3))
Om du fortfarande är osäker på lambdas punkt, dyker nästa avsnitt in och hjälper dig att se ljuset.
Python Lambdas med karta, filtrera och minska
Pythons kärnbibliotek har tre kallade metoder Karta, minska, och filtrera. Dessa metoder är möjligen de bästa anledningarna att använda lambda-funktioner.
De Karta Funktionen förväntar sig två argument: en funktion och en lista. Den tar den funktionen och tillämpar den på varje element i listan, och återför listan över modifierade element som ett kartobjekt. De lista funktionen används för att omvandla det resulterande kartobjektet igen till en lista igen.
Så här använder du kartan utan en lambda:
list1 = [2, 4, 6, 8] skriv ut (lista1) def add_five (nummer): returnummer + 5 new_list = lista (karta (add_five, list1)) print (new_list)
Denna kartfunktion är ganska praktisk, men det kan bli bättre. de add_five Funktionen skickas in som ett argument, men om du inte vill skapa en funktion varje gång du använder kartan? Du kan använda en lambda istället!
Här är vad samma kod ser ut, endast med funktionen ersatt av en lambda:
list1 = [2, 4, 6, 8] skriv ut (lista1) new_list = lista (karta (lambda x: x + 5, list1)) print (new_list)
Som du kan se, hela add_five funktionen är inte längre nödvändig. I stället används lambda-funktionen för att hålla sakerna snygga.
Med filtrera funktion, processen är mycket densamma. Filtrera tar en funktion och tillämpar den på alla personer i en lista och skapade en ny lista med endast de element som orsakade funktionen att returnera True.
Först utan lambdas:
Nummer = [1, 4, 5, 10, 20, 30] Skriv ut (Nummer) Def greater_than_ten_func (Nummer): Om nummer> 10: Retur Sannt annat: Återgå Falskt new_numbers = lista (filter (greater_than_ten_func, siffror)) print (new_numbers )
Det är inget fel med den här koden, men det blir lite lång. Låt oss se hur många linjer en lambda kan ta bort:
siffror = [1, 4, 5, 10, 20, 30] skriv ut (nummer) new_numbers = list (filter (lambda x: x> 10, siffror)) print (new_numbers)
Lambda-funktionen har ersatt behovet av hela greater_than_ten_func! Och det är gjort i fem enkla ord. Det är därför som lambdas är kraftfulla: de reducerar rodnad för enkla uppgifter.
Slutligen, låt oss titta på minska. Minska är en annan cool Python-funktion. Det gäller en rullande beräkning för alla objekt i en lista. Du kan använda detta för att räkna upp summan eller multiplicera alla nummer tillsammans:
från functools import minska antal = [10, 20, 30, 40] print (siffror) def sommar (a, b): returnera a + b resultat = minska (sommar, siffror)
Detta exempel måste importeras minska från functools modul, men oroa dig inte, functools-modulen är en del av Pythons kärnbibliotek.
Historien är väldigt lika med en lambda, det finns inget behov av en funktion:
från functools import minska antal = [10, 20, 30, 40] print (siffror) resultat = minska (lambda a, b: a + b, siffror)
Saker att se upp med med Python Lambdas
Dessa exempel har visat hur lätt lambda-funktionerna är, tillsammans med kartan, filtrera och minska, från Python-kärnbiblioteket. Fortfarande finns det några användningar där lambdafunktioner inte hjälper.
Om du gör något mer än en grundläggande uppgift, eller vill ringa andra metoder, använd en normal funktion. Lambdas är bra för enstaka, anonyma funktioner, men de måste bara ha ett enda uttryck. Om din lambda börjar se ut som ett vanligt uttryck, så är det nog dags att refactor in på en dedikerad metod.
För mer tips, kolla vår guide till objektorienterad programmering i Python. En nybörjarguide till Python Objektorienterad programmering. En nybörjarguide till Python Objektorienterad programmering. För att dra full nytta av Pythons styrkor vill du lära dig hur Python arbetar med objektorienterad programmering (OOP). Läs mer och kolla in vår FAQ-guide för Python-nybörjare De vanligaste frågorna om Python-programmering De vanligaste frågorna om Python-programmering I den här artikeln går vi igenom allt du behöver veta om Python som nybörjare. Läs mer .
Utforska mer om: Kodningstutorials, Python.