"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन 2 और पायथन 3 में 'exec' फ़ंक्शन अलग-अलग कैसे व्यवहार करता है?

पायथन 2 और पायथन 3 में 'exec' फ़ंक्शन अलग-अलग कैसे व्यवहार करता है?

2024-11-19 को प्रकाशित
ब्राउज़ करें:897

How does the `exec` function behave differently in Python 2 and Python 3?

पायथन 2 और पायथन 3 में निष्पादन फ़ंक्शन का व्यवहार

निष्पादन फ़ंक्शन पायथन 2 और पायथन 3 के बीच अलग व्यवहार प्रदर्शित करता है। पायथन 2 में, निष्पादन एक कथन है, जबकि Python 3 में, यह एक फ़ंक्शन में परिवर्तित हो गया है। इस अंतर का स्थानीय चर के साथ इसके इंटरैक्शन पर महत्वपूर्ण प्रभाव पड़ता है। जब निष्पादन कथन निष्पादित किया जाता है, तो पायथन कंपाइलर अस्थायी रूप से स्थानीय स्कोप अनुकूलन को अक्षम कर देता है और स्थानीय और वैश्विक दोनों चर तक पहुंचने के लिए धीमी लुकअप रणनीति पर स्विच करता है। इसके अतिरिक्त, यदि कोई स्पष्ट ग्लोबल और स्थानीय पैरामीटर प्रदान नहीं किए गए हैं, तो निष्पादन कथन के भीतर घोषित कोई भी चर स्वचालित रूप से फ़ंक्शन के स्थानीय लोगों में कॉपी हो जाता है।

पायथन 3 व्यवहार

पायथन 3 में, निष्पादन() फ़ंक्शन फ़ंक्शन स्कोप के नियमों का सख्ती से पालन करता है। यह अब किसी फ़ंक्शन के स्थानीय दायरे में वेरिएबल को संशोधित नहीं कर सकता है, भले ही वे पहले घोषित किए गए हों। Locals() स्थानीय चर को एक दिशा में प्रतिबिंबित करने में सक्षम है, लेकिन locals() के माध्यम से संशोधनों की अनुमति कभी भी समर्थित नहीं की गई है।

सही समाधान

पायथन 2 में देखे गए वांछित व्यवहार को प्राप्त करने के लिए, यह Python 3 में exec() को कॉल करते समय एक अलग नेमस्पेस का उपयोग करना आवश्यक है। exec() फ़ंक्शन में एक कस्टम डिक्शनरी पास करके, उस नेमस्पेस के भीतर वेरिएबल्स को संशोधित और एक्सेस करना संभव है।

नमूना कोड

निम्नलिखित कोड पायथन 3 में exec() का उपयोग करने का उचित तरीका दर्शाता है:

defexecute(a, st): नामस्थान = {} कार्यकारी ("बी = {}\nप्रिंट('बी:', बी)"।फॉर्मेट(एसटी), नेमस्पेस) print(namespace['b'])

यह दृष्टिकोण सुनिश्चित करता है कि फ़ंक्शन का स्थानीय दायरा बरकरार रहे, जबकि अभी भी परिभाषित नामस्थान के भीतर चर में संशोधन की अनुमति है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3