Coding for KidsCoding for Kids
Kreativní ÚrovněVýzvyPrůvodce pro Učitele
Hlasovat pro funkce
Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň

Dekorátory
Optimalizace dekorátorů

Cíl

Shromážděte ingredience a připravte různé druhy pizzy pomocí dekorátorů.

Nyní, když jsou pece nastavené, je čas připravit několik pizz, abychom je později mohli upéct. Nyní, když víme, jak používat dekorátory, můžeme je trochu optimalizovat. Použitím symbolu @ v kódu, následovaného názvem dekorátoru a umístěním tohoto kódu nad dekorovanou funkci, můžeme automaticky připojit dekorátor bez použití proměnné. Například:

# Decorator def create_pizza(func): def set(): pizza = ["dough","red sauce","cheese"] player.combine(pizza) func() return set # Function being decorated with @ @create_pizza def peperoni_pizza(): player.place("Peperoni") player.speak("Peperoni Pizza has been prepped") # Using pre-decorated function peperoni_pizza()

Je třeba poznamenat, že tato technika zjednodušuje proces tím, že má funkci předem dekorovanou před použitím, nicméně někdy můžete chtít přiřadit dekorátor do proměnné pro větší flexibilitu.

Nejprve se vydejte ke zlaté značce X a seberte ingredience pro přípravu pizzy. Ingredience pro přípravu pizzy jsou: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" a "pineapple". Většina těchto ingrediencí se nachází v matici představující regály ve spižírně, použijte List Comprehensions k uložení všech položek, které chcete sebrat, do seznamu.

shelves = [ ["cheese", "dough", "jar"], ["jar", "red sauce", "jar"], ["peperoni", "jar" , "ham"], ["olive", "pepper", "onions"] ] ingredients = [ item for row in shelves for item in row if not "jar" in item]

Ve výše uvedeném kódu seznam ingredients prochází řádky matice s názvem shelves a odstraňuje všechny položky s názvem "jar". Tento List Comprehension nám ušetří čas, kdybychom vše museli přidávat manuálně. Použijte funkci speak() se seznamem ingrediencí, abyste ověřili, které položky budete používat.

Jakmile jsou všechny ingredience sebrány kromě "pineapple", funkce pro přípravu pizz potřebují přidat funkce place(), aby jejich funkcionalita byla dokončena. Tyto funkce jsou nastaveny v editoru kódu a jsou pojmenovány: peperoni_pizza(), která vyžaduje: "peperoni", vegetable_pizza(), která vyžaduje: "olive", "pepper", "onion", a pineapple_pizza(), která vyžaduje: "ham" a "pineapple".

Vydejte se k tmavým značkám X a použijte dekorované funkce k přípravě pizz. Na značkách X s červenými kobercemi vytvořte peperoni_pizza(), na zelených kobercích vytvořte vegetable_pizza() a na žlutých kobercích vytvořte pineapple_pizza(). Na cestě k žlutému koberci se zastavte u světle označené značky X, postavte se ke skříni a použijte funkci collect() k sebrání "pineapple". Připravte všechny pizzy, abyste úspěšně dokončili úroveň.

Kniha Kódu