En begyndervejledning til forståelse af Python Lambda-funktioner

  • Joseph Goodman
  • 0
  • 1453
  • 241
Reklame

Lambdas i Python er en af ​​de mest nyttige, vigtige og interessante funktioner at vide om. Desværre er de også lette at misforstå og forkert.

I denne artikel skal vi forklare alt hvad du har brug for at vide om disse mystiske funktioner, hvordan man bruger dem og hvorfor de er nyttige.

Før du går i dybden i disse praktiske eksempler, kan det være en god ide at oprette et virtuelt Python-miljø Lær hvordan du bruger det virtuelle Python-miljø Lær hvordan du bruger det virtuelle Python-miljø Uanset om du er en erfaren Python-udvikler, eller du lige er i gang med at lære hvordan at opsætte et virtuelt miljø er vigtigt for ethvert Python-projekt. . Hvis du ikke engang ønsker at gøre det, skal du i det mindste prøve disse eksempler med et interaktivt online Python-shell. Prøv Python i din browser med disse gratis online interaktive skaller. Prøv Python i din browser med disse gratis online interaktive skaller, uanset om du ' hvis du går igennem disse Python-eksempler eller gennemgår det grundlæggende i arrays og lister, kan du teste koden lige i din browser. Her er de bedste online Python-tolke, vi har fundet. .

Hvad er en Lambda i Python?

En lambda er simpelthen en måde at definere en funktion i Python. De er undertiden kendt som “lambda-operatører” eller “lambda-funktioner”.

Hvis du har brugt Python før, har du sandsynligvis defineret dine funktioner ved hjælp af def nøgleord, og det har fungeret fint for dig indtil videre. Så hvorfor er der en anden måde at gøre det samme på?

Forskellen er, at lambda-funktioner er anonyme. Betydning, det er funktioner, der ikke behøver at blive navngivet. De bruges til at oprette små engangsfunktioner i tilfælde hvor a “ægte” funktionen ville være for stor og voluminøs.

Lambdas returnerer et funktionsobjekt, som kan tildeles en variabel. Lambdas kan have et vilkårligt antal argumenter, men de kan kun have et udtryk. Du kan ikke kalde andre funktioner inde i lambdas.

Den mest almindelige anvendelse til lambda-funktioner er i kode, der kræver en simpel en-linjefunktion, hvor det ville være for meget at skrive en komplet normal funktion. Dette er beskrevet mere detaljeret nedenfor, under “Hvad med kort, filtrering og reduktion?”.

Sådan bruges Lambdas i Python

Før vi ser på en lambda-funktion, lad os se på en super basic funktion defineret “traditionel” vej:

def add_five (nummer): return number + 5 print (add_five (number = 4))

Denne funktion er meget grundlæggende, men den tjener til at illustrere lambdas. Din kan være mere kompliceret end dette. Denne funktion tilføjer fem til ethvert nummer, der sendes til det gennem nummer parameter.

Sådan ser det ud som en lambda-funktion:

add_five = lambda nummer: nummer + 5 print (add_five (nummer = 4))

Snarere end at bruge def, ordet lambda anvendes. Ingen parenteser kræves, men ord efter lambda nøgleord oprettes som parametre. Kolon bruges til at adskille parametrene og udtrykket. I dette tilfælde er udtrykket nummer + 5.

Der er ingen grund til at bruge Vend tilbage søgeord-lambda gør dette automatisk for dig.

Sådan opretter du en lambda-funktion med to argumenter:

add_numbers_and_five = lambda number1, number2: number1 + number2 + 5 print (add_numbers_and_five (nummer1 = 4, number2 = 3))

Hvis du stadig er i tvivl om punktet med lambdas, vil det næste afsnit dykke ind og hjælpe dig med at se lyset.

Python Lambdas med kort, filtrer og reducer

Python-kernebiblioteket har tre kaldte metoder kort, reducere, og filter. Disse metoder er muligvis de bedste grunde til at bruge lambda-funktioner.

Det kort funktion forventer to argumenter: en funktion og en liste. Den tager denne funktion og anvender den til hvert element på listen og returnerer listen over ændrede elementer som et kortobjekt. Det liste funktion bruges til at konvertere det resulterende kortobjekt tilbage til en liste igen.

Sådan bruges kort uden en lambda:

liste1 = [2, 4, 6, 8] udskriv (liste1) def add_five (nummer): return nummer + 5 new_list = list (kort (add_five, list1)) print (new_list)

Denne kortfunktion er ganske praktisk, men den kunne være bedre. det add_five funktionen overføres som et argument, men hvad nu hvis du ikke ønsker at oprette en funktion hver gang du bruger kort? Du kan bruge en lambda i stedet!

Sådan ser den samme kode ud, kun med funktionen erstattet af en lambda:

liste1 = [2, 4, 6, 8] udskriv (liste1) ny_liste = liste (kort (lambda x: x + 5, liste1)) udskriv (ny_liste)

Som du kan se, helheden add_five funktion er ikke længere påkrævet. I stedet bruges lambda-funktionen til at holde tingene pæne.

Med filter funktion, processen er stort set den samme. Filter tager en funktion og anvender den til alle elemen på en liste og oprettede en ny liste med kun de elementer, der har fået funktionen til at returnere sand.

Først uden lammedyr:

tal = [1, 4, 5, 10, 20, 30] udskrivning (tal) def større_than_ten_func (tal): hvis nummer> 10: retur Sandt andet: returnerer False new_numbers = liste (filter (større_than_ten_func, tal)) print (nyt_nummer) )

Der er ikke noget galt med denne kode, men den bliver lidt lang. Lad os se, hvor mange linjer en lambda kan fjerne:

numre = [1, 4, 5, 10, 20, 30] udskriv (numre) new_numbers = list (filter (lambda x: x> 10, numbers)) print (new_numbers)

Lambda-funktionen har erstattet behovet for det hele greater_than_ten_func! Og det er gjort i fem enkle ord. Dette er grunden til at lambdas er kraftfulde: De reducerer rodet til enkle opgaver.

Endelig, lad os se på reducere. Reduce er en anden cool Python-funktion. Det anvender en rullende beregning på alle elementer på en liste. Du kan bruge dette til at sammenstille et samlet beløb eller multiplicere alle tal sammen:

fra funktionsimport mindsker antallet = [10, 20, 30, 40] udskriv (antal) def sommer (a, b): returner et + b resultat = reducer (sommer, tal) udskriv (resultat)

Dette eksempel skal importeres reducere fra functools modul, men rolig, funktionsmodulet er en del af Python-kernebiblioteket.

Historien er meget den samme med en lambda, der er ikke behov for en funktion:

fra funktionsimport mindsker antallet = [10, 20, 30, 40] udskriv (antal) resultat = reducer (lambda a, b: a + b, tal) udskriv (resultat)

Ting man skal passe på med Python Lambdas

Disse eksempler har vist, hvor lette lambda-funktioner er sammen med kort, filtrerer og reducerer fra Python-kernebiblioteket. Der er stadig et par anvendelser, hvor lambda-funktioner ikke hjælper.

Hvis du laver noget mere end en grundlæggende opgave, eller vil kalde andre metoder, skal du bruge en normal funktion. Lambdas er fremragende til enestående, anonyme funktioner, men de skal kun have et enkelt udtryk. Hvis din lambda begynder at se ud som et almindeligt udtryk, er det sandsynligvis tid til at refactor ind på en dedikeret metode.

For flere tip, se vores guide til objektorienteret programmering i Python A Beginners vejledning til Python Objektorienteret programmering En begynders guide til Python Objektorienteret programmering For at drage fuld fordel af Pythons styrker, ønsker du at lære, hvordan Python fungerer med objektorienteret programmering (OOP). og tjek vores FAQ-guide til Python-begyndere De mest ofte stillede spørgsmål om Python-programmering De mest ofte stillede spørgsmål om Python-programmering I denne artikel vil vi lede dig gennem alt hvad du har brug for at vide om Python som nybegynder. .




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.