Avancerad Pythonutvecklingskurs
Kapitel
>
Nivå
Dekoratörer
Använda dekoratorer
Anpassade funktioner har ett brett användningsområde, men ibland kanske du vill lägga till ytterligare funktionalitet till en redan existerande funktion. Detta kallas en dekoratör, vilket är en funktion designad för att utvidga en befintlig funktion, därav namnet.
För den här nivån måste ugnarna förberedas för att bli redo för matlagning. Använd dekoratörer för att open() och close() mellan att du lastar in ved i ugnarna.

Mål
Fyll ugnarna med ved och förbered dem för matlagning genom att använda dekoratörer.
De tegelugnorna måste göras redo så att du kan baka mat senare under kvällen. Ugnarna är avstängda och tomma och behöver lite ved för att tändas. Hämta lite ved och se till att den lastas i ugnarna så att du kan börja laga mat. Du kan göra detta manuellt eller genom att använda en anpassad funktion, men processen kan snabba på genom att använda dekoratörer.
Dekoratörer är tillägg som kan läggas till en anpassad funktion för att utöka dess funktionalitet vid behov utan att komplicera den med villkor.
# Decorator, adds extra functionality to another function
def load_wood(func):
def load():
player.open()
func()
player.close()
return load
# Custom function that can be decorated
def add_wood():
player.place("firewood")
player.speak("Three logs placed in oven")
# Decorate the custom function
prep_oven = load_wood(add_wood)
Gå till förrådet längst ner på kartan och samla in alla fyra (4) vedbuntar. Gå till den gyllene X-markeringen och använd funktionen read() för att kontrollera anteckningen på tavlan som visar vilka temperaturer ugnarna ska ställas in på. Notera informationen i popup-fönstret då du kommer att behöva den senare.
Därefter, gå till de ljusa X-markeringarna vid ugnen och använd den dekorerade funktionen för att placera veden, så här: prep_oven(). När du lägger veden i ugnen, gå till de mörka X-markeringarna på de färgade mattorna och använd question() async-funktionen för att ställa in ugnarnas temperatur.
Stödjande funktion kommer att vara förberedd, med namnet set_temperature(), och ditt svar på frågan kommer att avgöra om temperaturen ska ställas in på High eller Medium.
Ställ in temperaturen genom att skriva funktionen och svara på frågan med anteckningen du läste tidigare, med varje temperatur inställd i enlighet med den motsvarande färgade mattan. Kom ihåg att använda await när du använder async-funktioner, så här: await set_temperature()
När du har förberett och ställt in alla fyra (4) ugnar har du slutfört nivån.