Kursus Pembangunan Python Lanjutan
Bab
>
Tahap
Dekorator
Mengoptimumkan Penghias
Objektif
Kumpulkan bahan-bahan dan sediakan pelbagai jenis pizza dengan menggunakan decorators.
Kini bila oven telah disediakan, tiba masanya untuk menyediakan beberapa pizza supaya kita boleh memasaknya kemudian. Setelah kita mengetahui cara menggunakan decorators, kita boleh mengoptimumkannya sedikit. Dengan menggunakan simbol @ dalam kod diikuti dengan nama decorator dan meletakkan kod ini di atas fungsi yang dihias, kita boleh secara automatik melampirkan decorator tanpa menggunakan pembolehubah. Contohnya:
# 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()
Perlu diingatkan, teknik ini mempermudah proses dengan mempunyai fungsi yang telah dihias sebelum digunakan, walaupun kadang-kadang anda masih mahu menetapkan decorator kepada satu pembolehubah untuk fleksibiliti yang lebih besar.
Untuk memulakan, pergilah ke tanda X berwarna emas dan ambil bahan-bahan untuk membuat pizza. Bahan-bahan untuk membuat pizza adalah: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" dan "pineapple". Kebanyakan bahan ini berada di dalam Matrix yang mewakili rak dapur, guna List Comprehensions untuk menyimpan semua item yang anda ingin ambil dalam satu senarai.
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]
Dalam kod di atas, senarai ingredients mengimbas setiap baris dalam Matrix yang dinamakan shelves dan mengeluarkan semua item yang dinamakan "jar". List Comprehension ini menjimatkan masa daripada perlu menambah semuanya secara manual. Gunakan fungsi speak() dengan senarai bahan untuk mengesahkan item yang akan anda gunakan.
Setelah semua bahan dikumpulkan kecuali "pineapple", fungsi untuk membuat pizza memerlukan fungsi place() ditambahkan bagi melengkapkan kegunaannya. Fungsi-fungsi ini telah disediakan dalam editor kod dan dinamakan: peperoni_pizza() yang memerlukan: "peperoni", vegetable_pizza() yang memerlukan: "olive", "pepper", "onion", dan pineapple_pizza() yang memerlukan: "ham" dan "pineapple".
Pergilah ke tanda X gelap dan gunakan fungsi yang dihias untuk menyediakan pizza. Di tanda X dengan permaidani merah, cipta peperoni_pizza(), di permaidani hijau cipta vegetable_pizza() dan di permaidani kuning cipta pineapple_pizza(). Dalam perjalanan ke permaidani kuning, berhentilah di tanda X yang ringan, hadapi kabinet dan gunakan fungsi collect() untuk mengambil "pineapple". Sediakan semua pizza bagi menyelesaikan tahap dengan jayanya.