En nybegynners guide til forståelse av Python Lambda-funksjoner
Lambdas i Python er en av de mest nyttige, viktige og interessante funksjonene å vite om. Dessverre er de også enkle å misforstå og bli feil.
I denne artikkelen skal vi forklare alt du trenger å vite om disse mystiske funksjonene, hvordan du bruker dem, og hvorfor de er nyttige.
Før du drar inn i disse praktiske eksemplene, kan det være lurt å sette opp et virtuelt virtuelt miljø i Python. Lær hvordan du bruker Python Virtual Environment Lær hvordan du bruker Python Virtual Environment Uansett om du er en erfaren Python-utvikler, eller du er bare i gang, lærer du hvordan å sette opp et virtuelt miljø er viktig for ethvert Python-prosjekt. Les mer . Hvis du ikke engang vil gjøre det, bør du i det minste prøve disse eksemplene med et interaktivt online Python-shell Prøv Python i nettleseren din Med disse gratis online interaktive skjellene Prøv Python i nettleseren din med disse gratis online interaktive skjellene, enten du er ' gå gjennom disse Python-eksemplene eller gjennomgå grunnleggende om arrays og lister, kan du teste koden rett i nettleseren din. Her er de beste online Python tolkene vi har funnet. Les mer .
Hva er en Lambda i Python?
En lambda er ganske enkelt en måte å definere en funksjon i Python. De er noen ganger kjent som “lambda operatører” eller “lambda funksjoner”.
Hvis du har brukt Python før, har du sikkert definert funksjonene dine ved hjelp av def søkeord, og det har fungert bra for deg så langt. Så hvorfor er det en annen måte å gjøre det samme?
Forskjellen er at lambda-funksjonene er anonyme. Betydning, de er funksjoner som ikke trenger å bli navngitt. De er vant til å lage små, engangsfunksjoner i tilfeller der a “ekte” funksjonen ville være for stor og omfangsrik.
Lambdas returnerer et funksjonsobjekt, som kan tilordnes en variabel. Lambdas kan ha noen argumenter, men de kan bare ha ett uttrykk. Du kan ikke ringe andre funksjoner i lambdas.
Den vanligste bruken for lambda-funksjoner er i kode som krever en enkel enlinjefunksjon, hvor det ville være overkill å skrive en fullstendig normal funksjon. Dette er dekket mer detaljert under, under “Hva om Kart, Filter og Redusere?”.
Slik bruker du Lambdas i Python
Før vi ser på en lambda-funksjon, la oss se på en super grunnleggende funksjon definert “tradisjonell” vei:
def add_five (nummer): returnummer + 5 print (add_five (tall = 4))
Denne funksjonen er veldig grunnleggende, men den tjener til å illustrere lambdas. Din kan være mer kompleks enn dette. Denne funksjonen legger til fem til et hvilket som helst tall som sendes til det gjennom Nummer parameter.
Slik ser det ut som en lambda-funksjon:
add_five = lambda nummer: nummer + 5 print (add_five (tall = 4))
Snarere enn å bruke def, ordet lambda benyttes. Ingen parenteser kreves, men noen ord som følger lambda Søkeord er opprettet som parametere. Kolon brukes til å skille mellom parametrene og uttrykket. I dette tilfellet er uttrykket nummer + 5.
Det er ikke nødvendig å bruke komme tilbake søkeord-lambda gjør dette for deg automatisk.
Slik lager du en lambda-funksjon med to argumenter:
add_numbers_and_five = lambda nummer1, nummer2: nummer1 + nummer2 + 5 skriv ut (add_numbers_and_five (number1 = 4, number2 = 3))
Hvis du fortsatt er usikker på poenget med lambdas, vil den neste delen dykke inn og hjelpe deg med å se lyset.
Python Lambdas Med Kart, Filter og Redusere
Python-kjernebiblioteket har tre metoder kalt kart, redusere, og filter. Disse metodene er muligens de beste grunnene til å bruke lambda-funksjoner.
De kart funksjon forventer to argumenter: en funksjon og en liste. Det tar den funksjonen og gjelder den for hvert element i listen, og returnerer listen over modifiserte elementer som et kartobjekt. De liste funksjonen brukes til å konvertere det resulterende kartobjektet tilbake til en liste igjen.
Slik bruker du kart uten lambda:
list1 = [2, 4, 6, 8] print (liste1) def add_five (nummer): returnummer + 5 new_list = liste (map (add_five, list1)) print (new_list)
Denne kartfunksjonen er ganske nyttig, men det kan bli bedre. de add_five Funksjonen sendes inn som et argument, men hva om du ikke vil lage en funksjon hver gang du bruker kartet? Du kan bruke en lambda i stedet!
Her ser den samme koden ut, bare med funksjonen erstattet av en lambda:
list1 = [2, 4, 6, 8] print (liste1) new_list = liste (kart (lambda x: x + 5, liste1)) print (new_list)
Som du kan se, hele add_five funksjon er ikke lenger nødvendig. I stedet er lambda-funksjonen brukt til å holde ting pent.
Med filter funksjon, prosessen er mye den samme. Filter tar en funksjon og bruker den til alle elemenne i en liste og opprettet en ny liste med bare elementene som førte til at funksjonen returnerte True.
Først uten lambdas:
tall = [1, 4, 5, 10, 20, 30] skriv ut (tall) def greater_than_ten_func (nummer): hvis nummer> 10: return True sant: return False new_numbers = list (filter (greater_than_ten_func, tall)) print )
Det er ikke noe galt med denne koden, men det blir litt lang. La oss se hvor mange linjer en lambda kan fjerne:
tall = [1, 4, 5, 10, 20, 30] skriv ut (tall) new_numbers = list (filter (lambda x: x> 10, tall)) print (new_numbers)
Lambda-funksjonen har erstattet behovet for helheten greater_than_ten_func! Og det er gjort det i fem enkle ord. Det er derfor lambdas er kraftige: de reduserer rot for enkle oppgaver.
Til slutt, la oss se på redusere. Redusere er en annen kul Python-funksjon. Det gjelder en rullende beregning for alle elementer i en liste. Du kan bruke dette til å telle opp summen, eller formere alle tallene sammen:
fra functools import redusere tall = [10, 20, 30, 40] print (tall) def sommer (a, b): return a + b result = redusere (sommer, tall)
Dette eksemplet må importeres redusere fra functools modul, men ikke bekymre deg, functools modulen er en del av Python kjernebiblioteket.
Historien er veldig mye det samme med en lambda, det er ikke behov for en funksjon:
fra functools import redusere tall = [10, 20, 30, 40] print (tall) resultat = redusere (lambda a, b: a + b, tall) print
Ting å se opp med med Python Lambdas
Disse eksemplene har vist hvor lett lambda-funksjoner er, sammen med kart, filter og redusere, fra Python-kjernebiblioteket. Likevel er det noen bruksområder hvor lambda-funksjoner ikke hjelper.
Hvis du gjør noe mer enn en grunnleggende oppgave, eller vil ringe andre metoder, bruker du en vanlig funksjon. Lambdas er flotte for engang, anonyme funksjoner, men de må bare ha et enkelt uttrykk. Hvis din lambda begynner å se ut som et vanlig uttrykk, er det nok tid til å refactor inn i en dedikert metode.
For flere tips, se vår guide til objektorientert programmering i Python En nybegynners guide til Python Object Oriented Programmering En nybegynners guide til Python Object Oriented Programmering For å dra full nytte av Pythons styrker, vil du lære hvordan Python jobber med objektorientert programmering (OOP). Les mer og sjekk ut vår FAQ-guide for Python-nybegynnere De vanligste spørsmålene om Python-programmering De vanligste spørsmålene om Python-programmering I denne artikkelen vil vi gå gjennom alt du trenger å vite om Python som nybegynner. Les mer .
Utforsk mer om: Kodingstutorials, Python.