Avancerad Pythonutvecklingskurs
Kapitel
>
Nivå
Avancerade funktioner
Partiella funktioner
Mål
Packa och placera byggmaterial som levererats till kajen genom att använda partiella funktioner.
Vissa leveranser har precis kommit till en kaj, de bör packas och lagras så att de kan användas som byggmaterial. Materialen måste lindas in i tyg och knytas med tråd. Det är viktigt att väga alla föremål när du packar dem så att de kan transporteras effektivt senare. För att underlätta detta kan vi optimera processen genom att använda Partiella Funktioner.
En Partiell Funktion är en anpassad funktion som förkortas genom att inte behöva ange värden för argument som är i huvudsak konstanta. Detta gör att du kan använda funktioner som tar flera argument och köra dem med bara ett enda argument eller vilket antal du än väljer.
from functools import partial
För att komma igång måste du importera partial från modulen som heter functools, detta gör att du kan skapa Partiella Funktioner. Import av kod sker alltid högst upp i kodredigeraren.
Skapa en funktion med namnet weight och låt den ta tre (3) argument: thread, cloth och material. Denna funktion tillåter dig att beräkna vikten av det packade materialet, och vi kan optimera processen ytterligare genom att leda om den via en partiell funktion.
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
Skapa en Partiell Funktion med namnet package, den sätts upp på liknande sätt som lambda-funktioner. Använd partial() för att fylla i funktionen och ange namnet på funktionen samt fasta värden för de argument du vill tilldela.
Alla argument från den ursprungliga funktionen som du inte tilldelar blir de argument som måste anges av den Partiella Funktionen. I fallet med package() är det argumentet material.
Gå till de mörka X-markeringarna framför lådorna för att hämta packmaterial. Vid den gula mattan med X-markeringen, använd funktionen collect() för att hämta "thread" och gå till den lila mattan med X-markeringen och använd funktionen collect() för att hämta "cloth". Dessa föremål kommer att användas för att packa materialet.
Gå över kajen och hämta alla byggmaterial, dessa är: bricks, planks, red_bricks och wood. När du har samlat dem, lägg antalet du har samlat för varje material i en variabel med samma namn som materialet, till exempel: bricks = 3.
Efteråt, gå till de ljusa X-markeringarna framför lådorna och beräkna vikten för varje byggmaterial innan du lagrar det. Använd funktionen speak() i kombination med den package() Partiella Funktionen för att beräkna vikten. Använd materialvariablerna som argument för funktionen package(), till exempel:
player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))
Följ upp detta genom att använda funktionen place() för att lagra materialet inuti lådorna, gör det med package()-funktionen också, som i exemplet ovan.
Vid den ljusa X-markeringen med den red mattan, väg och lagra bricks. Vid den ljusa X-markeringen med den blue mattan, väg och lagra planks. Vid den ljusa X-markeringen med den orange mattan, väg och lagra red_bricks. Vid den ljusa X-markeringen med den green mattan, väg och lagra wood. Lagra och väg alla fyra (4) material i de rätta lådorna för att slutföra nivån.