Coding for KidsCoding for Kids
ระดับสร้างสรรค์ความท้าทายคู่มือครู
โหวตสำหรับฟีเจอร์
หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ

ตัวตกแต่ง
การเพิ่มประสิทธิภาพของ Decorators

วัตถุประสงค์

รวบรวมส่วนผสมและเตรียมพิซซ่าหลากประเภทโดยใช้ decorators.

ตอนนี้เตาอบได้ถูกตั้งค่าแล้ว ถึงเวลาที่จะเตรียมพิซซ่าเพื่อให้เราสามารถทำอาหารต่อไปได้ หลังจากที่เรารู้วิธีใช้ decorators เราสามารถปรับปรุงให้มีประสิทธิภาพมากขึ้นได้ ด้วยการใช้สัญลักษณ์ @ ในโค้ดตามด้วยชื่อของ decorator และวางโค้ดนี้ไว้เหนือฟังก์ชันที่ต้องตกแต่ง เราสามารถแนบ decorator โดยอัตโนมัติโดยไม่ต้องใช้ตัวแปร ตัวอย่างเช่น:

# 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()

ต้องสังเกตว่า เทคนิคนี้ช่วยให้งานง่ายขึ้นด้วยการที่ฟังก์ชันถูกตกแต่งไว้ล่วงหน้าก่อนใช้งาน แต่บางครั้งคุณอาจยังคงต้องการกำหนด decorator ให้กับตัวแปรเพื่อความยืดหยุ่นที่มากขึ้น

เริ่มต้นด้วยการเดินไปยังเครื่องหมาย X สีทองและหยิบส่วนผสมสำหรับทำพิซซ่า ส่วนผสมสำหรับทำพิซซ่าคือ: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" และ "pineapple". ส่วนใหญ่ของส่วนผสมเหล่านี้อยู่ภายใน Matrix ที่แทนชั้นวางของใช้ในครัว ใช้ List Comprehensions ในการจัดเก็บรายการของรายการที่คุณต้องการหยิบไว้ในลิสต์

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]

ในโค้ดด้านบน ลิสต์ ingredients วนซ้ำผ่านแถวต่าง ๆ ของ Matrix ชื่อ shelves และลบรายการทั้งหมดที่เป็น "jar" ออกไป List Comprehension นี้ช่วยประหยัดเวลาในการรวมทุกสิ่งทุกอย่างด้วยตนเอง ใช้ฟังก์ชัน speak() กับลิสต์ส่วนผสมเพื่อตรวจสอบรายการที่คุณจะใช้

เมื่อรวบรวมส่วนผสมทั้งหมดแล้ว ยกเว้น "pineapple" ฟังก์ชันสำหรับทำพิซซ่าต้องมีฟังก์ชัน place() เพิ่มเข้ามาเพื่อให้สามารถทำงานได้ ฟังก์ชันเหล่านี้ถูกตั้งค่าไว้ในตัวแก้ไขโค้ดและมีชื่อว่า: peperoni_pizza() ซึ่งต้องการ "peperoni", vegetable_pizza() ซึ่งต้องการ "olive", "pepper", "onion" และ pineapple_pizza() ซึ่งต้องการ "ham" และ "pineapple"

เดินไปยังเครื่องหมาย X สีเข้มและใช้ฟังก์ชันที่ถูกตกแต่งในการเตรียมพิซซ่า บนเครื่องหมาย X ที่มีพรมสีแดงให้สร้าง peperoni_pizza(), บนพรมสีเขียวให้สร้าง vegetable_pizza() และบนพรมสีเหลืองให้สร้าง pineapple_pizza(). ระหว่างทางไปยังพรมสีเหลือง ให้แวะที่เครื่องหมาย X สีอ่อน หันหน้าเข้าหาตู้และใช้ฟังก์ชัน collect() เพื่อหยิบ "pineapple" เตรียมพิซซ่าทั้งหมดเพื่อที่จะผ่านด่านนี้ไปอย่างสำเร็จ

หนังสือโค้ด