निष्पादन फ़ंक्शन पायथन 2 और पायथन 3 के बीच अलग व्यवहार प्रदर्शित करता है। पायथन 2 में, निष्पादन एक कथन है, जबकि Python 3 में, यह एक फ़ंक्शन में परिवर्तित हो गया है। इस अंतर का स्थानीय चर के साथ इसके इंटरैक्शन पर महत्वपूर्ण प्रभाव पड़ता है। जब निष्पादन कथन निष्पादित किया जाता है, तो पायथन कंपाइलर अस्थायी रूप से स्थानीय स्कोप अनुकूलन को अक्षम कर देता है और स्थानीय और वैश्विक दोनों चर तक पहुंचने के लिए धीमी लुकअप रणनीति पर स्विच करता है। इसके अतिरिक्त, यदि कोई स्पष्ट ग्लोबल और स्थानीय पैरामीटर प्रदान नहीं किए गए हैं, तो निष्पादन कथन के भीतर घोषित कोई भी चर स्वचालित रूप से फ़ंक्शन के स्थानीय लोगों में कॉपी हो जाता है।
पायथन 3 में, निष्पादन() फ़ंक्शन फ़ंक्शन स्कोप के नियमों का सख्ती से पालन करता है। यह अब किसी फ़ंक्शन के स्थानीय दायरे में वेरिएबल को संशोधित नहीं कर सकता है, भले ही वे पहले घोषित किए गए हों। Locals() स्थानीय चर को एक दिशा में प्रतिबिंबित करने में सक्षम है, लेकिन locals() के माध्यम से संशोधनों की अनुमति कभी भी समर्थित नहीं की गई है।
पायथन 2 में देखे गए वांछित व्यवहार को प्राप्त करने के लिए, यह Python 3 में exec() को कॉल करते समय एक अलग नेमस्पेस का उपयोग करना आवश्यक है। exec() फ़ंक्शन में एक कस्टम डिक्शनरी पास करके, उस नेमस्पेस के भीतर वेरिएबल्स को संशोधित और एक्सेस करना संभव है।
निम्नलिखित कोड पायथन 3 में exec() का उपयोग करने का उचित तरीका दर्शाता है:
यह दृष्टिकोण सुनिश्चित करता है कि फ़ंक्शन का स्थानीय दायरा बरकरार रहे, जबकि अभी भी परिभाषित नामस्थान के भीतर चर में संशोधन की अनुमति है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3