फंक्शन कॉल ग्लोबल वेरिएबल को अपडेट नहीं करता है
यह प्रश्न एक प्रोग्रामिंग चुनौती का पता लगाता है जहां एक ग्लोबल वेरिएबल, जिसे शुरू में गलत के रूप में निर्दिष्ट किया गया था, ' किसी फ़ंक्शन के भीतर संदर्भित होने पर इसे अद्यतन किया जा रहा है। फ़ंक्शन द्वारा वैश्विक चर के मान को बदलने के बावजूद, मुख्य प्रोग्राम का लूप निष्पादित होता रहता है, जिससे एक अनंत लूप बन जाता है। इस मुद्दे को समझने के लिए नेमस्पेस और वेरिएबल स्कोपिंग की अवधारणा को समझने की आवश्यकता है।
नेमस्पेस और वेरिएबल स्कोप
प्रोग्रामिंग में, प्रत्येक फ़ंक्शन और मॉड्यूल अपना नेमस्पेस बनाता है। नेमस्पेस उन नामों (चर, फ़ंक्शंस इत्यादि) का एक संग्रह है जो उस दायरे में ज्ञात और पहुंच योग्य हैं। जब एक वेरिएबल को किसी फ़ंक्शन के अंदर एक मान निर्दिष्ट किया जाता है, तो फ़ंक्शन के नेमस्पेस में एक नया वेरिएबल बनाया जाता है, भले ही समान नाम वाला एक ग्लोबल वेरिएबल मौजूद हो।
ग्लोबल वेरिएबल्स का उपयोग करना
इस मामले में, जब फ़ंक्शन के भीतर "किया गया" नामक एक वैश्विक चर को संदर्भित किया जाता है, तो फ़ंक्शन के नामस्थान में उसी नाम के साथ एक नया स्थानीय चर बनाया जाता है। यह स्थानीय "किया गया" वैश्विक "किया गया" से अलग है। स्थानीय "किया गया" को बदलने से वैश्विक चर पर कोई प्रभाव नहीं पड़ता है। समारोह. ग्लोबल डन का उपयोग करके, फ़ंक्शन दुभाषिया को एक नया स्थानीय बनाने के बजाय ग्लोबल "डन" वेरिएबल तक पहुंचने के लिए कहता है।
संशोधित कोड
समस्या को ठीक करने के लिए , फ़ंक्शन को निम्नानुसार संशोधित किया जा सकता है:
def function(): वैश्विक हो गया पाश के लिए: कोड यदि अनुपालन नहीं किया जाए: किया = सत्य
स्पष्टीकरण
def function():
global done
for loop:
code
if not comply:
done = True
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3