Coding for KidsCoding for Kids
रचनात्मक स्तरचुनौतियांशिक्षक गाइड
सुविधाओं के लिए वोट करें
उन्नत पायथन विकास पाठ्यक्रम
अध्याय
>
स्तर

उन्नत फ़ंक्शंस
क्लोज़र

उद्देश्य

क्लोज़र्स सेट करके और उनका उपयोग करके खेत में पानी की आपूर्ति को नियंत्रित करें।

आस-पास के खेतों में पानी देने के लिए चार जल टैंक डिज़ाइन किए गए हैं, अब समय आ चुका है कि उन्हें स्विच किया जाए ताकि सही मात्रा में पानी सही जगह वितरित हो सके। इस काम को आसान बनाने के लिए हम क्लोज़र्स का उपयोग कर सकते हैं।

क्लोज़र्स नेस्टेड फ़ंक्शंस होते हैं जिन्हें डेटा को एन्कैप्सुलेट (encapsulate) करने के लिए डिज़ाइन किया गया है, इससे आपको कम वेरिएबल्स का उपयोग करना पड़ता है और डेटा को फ़ंक्शन के अंदर छिपा दिया जाता है ताकि उसे बाहरी रूप से बदला न जा सके, अर्थात् फ़ंक्शन को बंद कर दिया जाता है।

टैंकों में पानी को नियंत्रित करने के लिए हम एक नेस्टेड फ़ंक्शन बनाएंगे जो मल्टिप्लायर के रूप में काम करता है। यह फ़ंक्शन उसी प्रकार काम करता है जैसे कोई लूप, बाहरी फ़ंक्शन जिसका नाम multiplier_of() है, एक आर्गुमेंट लेता है जिसे इसके अंदर के फ़ंक्शन multiplier() के आर्गुमेंट से गुणा किया जाता है।

# Nested Function def multiplier_of(n): def multiplier(number): return number*n return multiplier

सेटअप होने के बाद हमें क्लोज़र्स सेट करके फ़ंक्शन को संलग्न करना होगा, जिससे उनके मानों तक पहुंच रोकी जाती है और उनके उपयोग को स्थिर किया जाता है।

# Set up Closure that multiplies any number by 2 multiply_by_2 = multiplier_of(2) # Uses closure to display a number on screen player.speak( multiply_by_2(4) ) # The number displayed is 8, the formula is [2 x 4 = 8]

ऊपर दी गई क्लोज़र का नाम multiply_by_2() है और यह उस नेस्टेड फ़ंक्शन का उपयोग करती है जिसे हमने एक निश्चित आर्गुमेंट, अर्थात् 2, के साथ बनाया था, जो उस संख्या को दर्शाता है जिससे क्लोज़र गुणा करने के लिए सेट है। परिणामस्वरूप, जिस भी नंबर को हम आर्गुमेंट के रूप में जोड़ेंगे वह दो (2) से गुणा हो जाएगा और यह गुण क्लोज्ड होने के कारण बदला नहीं जा सकता।

पानी के टैंकों को नियंत्रित करने के लिए आगे बढ़ते हुए, तीन (3) क्लोज़र्स सेट करें: multiply_by_2, multiply_by_3 और multiply_by_5। उन्हें मैन्युअली उसी प्रारूप का उपयोग करके सेट करें जैसा कि पहले उदाहरण में किया गया था, जैसे: multiply_by_2 = multiplier_of(2)

इस स्तर में tanks नाम की एक डिक्शनरी कॉन्स्टैंट है, जो एक इंडेक्स के रूप में छह (6) रंगों को धारण करती है: “red", “blue", “orange", “purple", “yellow" और “green"। प्रत्येक इंडेक्स में एक संख्या है जो यह दर्शाती है कि टैंक की किनारे से कितना पानी बह रहा है; इस संख्या का उपयोग टैंक को नियंत्रित करने के लिए पहले चर्चा किए गए “multiply_by” क्लोज़र्स का उपयोग करते हुए किया जाएगा।

इस सुविधा के लिए एडिटर में एक फ़ंक्शन regulate_water() सेट किया जाएगा, जो दो आर्गुमेंट लेता है: रंग (जो ऊपर सूचीबद्ध इंडेक्स का प्रतिनिधित्व करता है) और मल्टिप्लायर (जो उपयोग में लाए जाने वाले मल्टिप्लायर क्लोज़र का प्रतिनिधित्व करता है)। फ़ंक्शन के उपयोग का एक उदाहरण निम्नानुसार है: regulate_water("red" , multiply_by_2)

रंगीन कालीनों के ऊपर स्थित अँधेरे X निशानों के पास जाएँ और टैंकों का सामना करें, regulate_water() फ़ंक्शन का उपयोग करें और कालीन का रंग पहले आर्गुमेंट के रूप में तथा उपयुक्त मल्टिप्लायर क्लोज़र दूसरे आर्गुमेंट के रूप में सेट करें। प्रत्येक रंगीन कालीन पर उपयोग किए जाने वाले मल्टिप्लायर्स निम्नानुसार हैं:

multiply_by_2 - "red" and "green" multiply_by_3 - "blue" and "purple" multiply_by_5 - "orange" and "yellow"

स्तर पूरा करने के लिए प्रत्येक टैंक की किनारों पर पानी को नियंत्रित करें।

कोड बुक