Om Lambda-funktioner
Lambda-funktioner i python är namnlösa och anonyma funktioner som kan användas för att skapa uttryck som returnerar någon form av värde baserat på beräkningarna som implementeras i själva uttrycket. Logiken i dessa lambdafunktioner kan skrivas på ett kortfattat sätt, vanligtvis något som lätt passar i en rad. Ibland kan de vara svåra att läsa, särskilt om människor inte är väl insatta i Lambda-funktioner. Men de har fördelen att hålla saker ihop inom kodblock och de hjälper bättre att förstå sammanhanget.
Syntax för Lambda-funktioner
Syntaxen för en Lambda-funktion i Python ser ut så här:
multiplicera = lambda x, y: x * yDen första delen av lambdauttrycket, strax före kolon (:) -symbolen, tar parametrar som argument. Den andra delen, efter kolon-symbolen, måste vara ett returvärde. Detta returvärde kan också vara ett uttryck med logik. I själva verket används Lambdafunktioner nästan hela tiden för att implementera lite logik på levererade argument och sedan returnera det slutliga resultatet.
För att testa Lambda-funktionen som anges ovan kan du använda följande uttalande:
skriva ut (multiplicera (3, 4))Du bör få följande utdata:
12Samma lambdafunktion skulle annars skrivas på följande sätt:
def multiplicera (x, y):returnera x * y
skriva ut (multiplicera (3, 4))
Båda kodproverna ger samma utdata. Några fler exempel på Lambda-funktioner förklaras nedan.
Passera Lambda fungerar som argument
Du kan använda Lambda-funktioner för att göra beräkningar och ange returvärdet som argument till andra funktioner. Sorteringsmetod i Python tar ett ”nyckel” -argument där du kan ange en anropbar funktion som tar ett enda argument för sorteringsändamål. Istället för att först definiera en separat funktion som returnerar en nyckel och sedan tillhandahålla funktionens referens till argumentet kan du helt enkelt använda en Lambda-funktion.
frukt = [(2, "äpplen"), (4, "apelsiner"), (3, "bananer")]frukter.sort (key = lambda element: element [0])
tryck (frukt)
Koden ovan kommer att producera följande utdata:
[(2, "äpplen"), (3, "bananer"), (4, "apelsiner")]Du kan använda lambda i vilken metod som helst som tar en kallbar funktion som argument (till exempel filtermetod).
Använd Lambda-funktioner i listförståelser
Du kan använda Lambda i listförståelser och en lista kommer att skapas vederbörligen från de värden som returneras av Lambda-uttrycket.
get_square = lambda a: a * arutor = [get_square (x) för x i intervall (5)]
skriva ut (rutor)
Detta ger följande resultat:
[0, 1, 4, 9, 16]Kodprovet ovan kan också skrivas på följande sätt där ”x” levereras till lambdafunktionen som ett argument:
rutor = [(lambda x: x * x) (x) för x i intervallet (5)]skriva ut (rutor)
Detta exempel illustrerar bara användningen av Lambda-funktioner i listförståelser. Du kan annars enkelt beräkna rutor med ett minimalt uttalande om listförståelse:
skriv ut ([x * x för x i intervall (5)])Använd Lambda-funktioner i Python-ordböcker
Kodprovet nedan illustrerar Lambda-funktioner som används inom nyckel-värdepar i en Python-ordlista. När du väl har definierat kan du ringa dessa funktioner när som helst.
beräkna = 'summa': lambda a, b: a + b, 'skillnad': lambda a, b: a - bskriva ut (beräkna ['summa'] (4, 5))
skriva ut (beräkna ['skillnad'] (4, 5))
Du bör få följande utdata efter att ha kört ovanstående kod:
9-1
Slutsats
Lambda-funktioner ger ett utmärkt sätt att skriva förkortade uttryck och hålla saker snygga och organiserade utan att onödigt skapa många namngivna funktioner. Men överanvändning av Lambda-funktioner kan göra det svårt att läsa koden, särskilt när mer än en person tittar på koden. Det är bättre att ha mer läsbar kod (även om den är uttömmande) än att ha något som kan vara lite svårt att förstå vid återbesök.