उन्नत पायथन विकास पाठ्यक्रम
अध्याय
>
स्तर
डेकोरेटर्स
डेकोरेटर्स का अनुकूलन
उद्देश्य
डेकोरेटर्स का उपयोग करके सामग्री एकत्र करें और विभिन्न प्रकार की पिज्जा तैयार करें।
अब जब ओवन सेटअप कर दिए गए हैं, तो बाद में पकाने के लिए कुछ पिज्जा तैयार करने का समय है। अब जब हमें डेकोरेटर्स का उपयोग करना आ गया है, तो हम उन्हें थोड़ा अनुकूलित करने पर काम कर सकते हैं। कोड में @ चिन्ह का उपयोग करके, डेकोरेटर के नाम के साथ और इस कोड को डेकोरेटेड फ़ंक्शन के ऊपर रखकर, हम बिना किसी वैरिएबल का उपयोग किए स्वचालित रूप से डेकोरेटर संलग्न कर सकते हैं। उदाहरण के लिए:
# 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()
यह ध्यान देने योग्य है कि यह तकनीक प्रक्रिया को सरल बना देती है क्योंकि एक फ़ंक्शन पहले से डेकोरेट किया जाता है, हालांकि कभी-कभी आप अधिक लचीलापन के लिए डेकोरेटर को एक वैरिएबल में असाइन करना चाह सकते हैं।
शुरू करने के लिए, गोल्ड X मार्क तक जाएं और पिज्जा बनाने के लिए सामग्री एकत्र करें। पिज्जा बनाने की सामग्री हैं: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" और "pineapple". इनमें से अधिकांश सामग्री पैंटरी की शेल्व्स का प्रतिनिधित्व करने वाले एक मैट्रिक्स के अंदर हैं, जिनमें से आप उस सूची में सभी आइटम लेने के लिए 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, 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" लें। लेवल को सफलतापूर्वक पूरा करने के लिए सभी पिज्जा तैयार करें।