En begyndervejledning til forståelse af Python Lambda -funktioner

En begyndervejledning til forståelse af Python Lambda -funktioner

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 tage fejl.





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





Inden du dykker ned i disse praktiske eksempler, kan du oprette et virtuelt Python -miljø. Hvis du ikke engang vil gøre det, skal du i det mindste prøve disse eksempler med en interaktiv online Python -skal .





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 søgeord, 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. Det betyder, at de er funktioner, der ikke behøver at navngives. De bruges til at oprette små, engangsfunktioner i tilfælde, hvor en 'rigtig' funktion ville være for stor og omfangsrig.

Lambdas returnerer et funktionsobjekt, som kan tildeles en variabel. Lambdas kan have et vilkårligt antal argumenter, men de kan kun have ét 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 enlinjefunktion, hvor det ville være overkill at skrive en komplet normal funktion. Dette er dækket mere detaljeret nedenfor under 'Hvad med kort, filter og reducer?'.

Sådan bruges Lambdas i Python

Før vi ser på en lambda -funktion, lad os se på en super grundlæggende funktion, der definerede den 'traditionelle' måde:





def add_five(number):
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 kompleks end dette. Denne funktion tilføjer fem til ethvert tal, der sendes til det via nummer parameter.

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

add_five = lambda number: number + 5

print(add_five(number=4))

Frem for at bruge def , ordet lambda anvendes. Der kræves ingen parenteser, men ord efter lambda søgeord oprettes som parametre. Tykktarmen bruges til at adskille parametrene og udtrykket. I dette tilfælde er udtrykket nummer + 5 .

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

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

kan whatsapp sende sms til ikke -brugere
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Hvis du stadig er usikker på pointen med lambdas, dykker det næste afsnit ind og hjælper dig med at se lyset.

Python Lambdas med kort, filter og reducer

Python -kernebiblioteket har tre metoder kaldet 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 den funktion og anvender den på 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 kortet uden en lambda:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Denne kortfunktion er ganske praktisk, men den kunne være bedre. det add_five funktion videregives som et argument, men hvad nu hvis du ikke vil 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:

forskel mellem serie 3 og 5 æbleur
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

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

Med filter funktion, er processen meget den samme. Filter tager en funktion og anvender den på alle elemen på en liste og oprettede en ny liste med kun de elementer, der fik funktionen til at returnere True.

For det første uden lambdas:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

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

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

Lambda -funktionen har erstattet behovet for helheden større_ end_ten_func ! Og det er gjort i fem enkle ord. Det er derfor, lambdas er kraftfulde: de reducerer rod ved simple opgaver.

Lad os endelig se på reducere . Reducer er en anden cool Python -funktion. Det anvender en rullende beregning for alle elementer på en liste. Du kan bruge dette til at tælle en sum sammen eller multiplicere alle tal sammen:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

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

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

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Ting at passe på med Python Lambdas

Disse eksempler har vist, hvor lette lambda -funktioner er sammen med kort, filter og reducering fra Python -kernebiblioteket. Alligevel er der et par anvendelser, hvor lambda -funktioner ikke hjælper.

Hvis du laver mere end en grundlæggende opgave eller vil kalde andre metoder, skal du bruge en normal funktion. Lambdas er gode til anonyme funktioner, men de må kun have et enkelt udtryk. Hvis din lambda begynder at ligne et regulært udtryk, er det sandsynligvis på tide at refaktorere til en dedikeret metode.

For flere tips, tjek vores guide til objektorienteret programmering i Python og tjek vores FAQ -guide til Python -begyndere.

Del Del Tweet E -mail 3 måder at kontrollere, om en e -mail er ægte eller falsk

Hvis du har modtaget en e -mail, der ser lidt tvivlsom ud, er det altid bedst at kontrollere dens ægthed. Her er tre måder at se, om en e -mail er ægte.

Læs Næste
Relaterede emner
  • Programmering
  • Python
  • Kodning Tutorials
Om forfatteren Joe Coburn(136 artikler udgivet)

Joe er uddannet i datalogi fra University of Lincoln, UK. Han er en professionel softwareudvikler, og når han ikke flyver med droner eller skriver musik, kan han ofte findes tage fotos eller producere videoer.

Mere fra Joe Coburn

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere