Avanceret Python Udviklingskursus
Kapitel
>
Niveau
Avancerede funktioner
Partielle funktioner
Mål
Pak og placer byggematerialer, der blev leveret til kajen ved brug af partial functions.
Nogle leverancer blev lige ankommet til en kaj; de skal pakkes og opbevares, så de kan bruges som byggematerialer. Materialerne skal pakkes ind i klud og bindes med tråd. Det er vigtigt at veje alle elementer, når du pakker dem, så de senere kan transporteres effektivt. For at lette dette kan vi optimere processen ved hjælp af Partial Functions.
En Partial Function er en specialfremstillet funktion, der forkortes ved, at du ikke behøver at tilføje argumentværdier, som stort set er ens. Dette gør det muligt at bruge funktioner, der tager flere argumenter, og udføre dem med kun et enkelt argument eller et hvilket som helst antal, du vælger.
from functools import partial
For at starte skal du importere partial fra modulet kendt som functools, dette gør det muligt at oprette Partial Functions. Import af kode placeres altid øverst i kodeeditoren.
Opsæt en funktion med navnet weight og få den til at tage tre(3) argumenter: thread, cloth og material. Denne funktion vil give dig mulighed for at beregne vægten af de pakkede materialer; vi kan optimere denne proces yderligere ved at kanalisere den gennem en partial function.
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
Opret en Partial Function med navnet package, den opsættes på en lignende måde som lambda-funktioner. Brug partial() til at udfylde funktionen og tilføj navnet på funktionen samt faste værdier for de argumenter, du ønsker at tildele.
Eventuelle argumenter fra den oprindelige funktion, som du ikke tildeler, vil blive de argumenter, der skal tildeles af Partial Function. I tilfældet med package() Partial Function er det material-argumentet.
Gå til de mørke X-mærker foran kasserne for at hente pakkematerialer. På det gule tæppe X-mærke, brug funktionen collect() til at hente "thread" og gå til det lilla tæppe X-mærke og brug funktionen collect() til at hente "cloth". Disse elementer vil blive brugt til at pakke materialerne.
Gå hen over kajen og hent alle byggematerialerne, disse er: bricks, planks, red_bricks og wood. Når du har samlet dem, skal du tildele antallet, du har samlet af hvert, til en variabel, der hedder efter materialet, for eksempel: bricks = 3.
Herefter skal du gå til de lyse X-mærker foran kasserne og beregne vægten af hvert byggemateriale, inden du opbevarer det. Brug funktionen speak() i kombination med package() Partial Function til at beregne vægten. Brug materialernes variabler som argumenter for funktionen package(), for eksempel:
player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))
Følg dette op ved at bruge funktionen place() til at opbevare materialet inde i kasserne, gør dette også ved hjælp af funktionen package(), som i eksemplet ovenfor.
På det lyse X-mærke med det red tæppe, vej og opbevar bricks. På det lyse X-mærke med det blue tæppe, vej og opbevar planks. På det lyse X-mærke med det orange tæppe, vej og opbevar red_bricks. På det lyse X-mærke med det green tæppe, vej og opbevar wood. Opbevar og vej alle fire(4) materialer i de korrekte kasser for at fuldføre niveauet.