Avanceret Python Udviklingskursus
Kapitel
>
Niveau
Avancerede funktioner
Lambda-funktioner
Mål
Brug lambda-funktioner til at dokumentere nogle forbrugsvarer, så de kan blive samlet til afsendelse senere.
Nogle af de frugter og bær, der findes på marken, er næsten klar til at blive plukket, så de kan opbevares, sendes og sælges. Det ville være en god idé at nedskrive de varer, der næsten er klar, så du har et skøn over, hvor mange produkter fra denne mark, der bliver pakket og sendt.
For at optimere din kode kan du bruge lambda-funktioner. Dette er en anden måde at oprette brugerdefinerede funktioner på, men det er hurtigere, når de funktioner, du opretter, er simplere.
# Normal Custom Function
def calculate(x , y , z) :
return( (x+y+z) *2 )
# Lambda Function
calculate = lambda x,y,z : (x + y + z) * 2
I det ovenstående eksempel har du to funktioner, en brugerdefineret funktion og en lambda-funktion. Selvom de er skrevet forskelligt, fungerer de identisk; lambda-funktionen er blot nemmere at bruge og kan hurtigt sættes op midt i koden. Det skal dog nævnes, at den normale metode til at definere funktioner stadig er meget nyttig for komplekse kodeforløb.
Der er to (2) typer varer, der kan kategoriseres på marken: fruits og berries. Af disse to (2) typer er der tre (3) frugter: apples, pears og oranges; og der er tre (3) bær: red, blue og purple.
Opsæt først den lambda-funktion, der er illustreret ovenfor, med navnet calculate. Denne funktion giver os mulighed for at få antallet af forudsagte varer for sæsonen ved at lægge tre tal sammen og gange resultatet med to (2). Opret en anden lambda-funktion med navnet estimate for at estimere, hvilke varer der vil blive indsamlet, som en brugerdefineret speak-funktion. Til sidst opsættes en lambda-funktion med navnet total, som lægger to værdier sammen og trækker en tredje værdi, kaldet loss, fra.
# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)
Opret variabler for hver af de tre (3) frugter, og angiv antallet for hver af dem, der er på marken. Gå til det mørke X-mærke, og brug lambda-funktionen calculate() med alle tre frugtvariabler, og gem værdien i en brugerdefineret variabel med navnet fruit_number, således: fruit_number = calculate(orange,pear,apple). Fortsæt med at bruge lambda-funktionen estimate() med fruit_number som nummer og `