पायथन सभी वैश्विक चर के शब्दकोश को एक्सेस करने के लिए globals()
फ़ंक्शन प्रदान करता है। यह एक समारोह क्यों है और एक चर नहीं है? निम्नलिखित कार्य:पाइथन में ग्लोबल्स() एक फ़ंक्शन क्यों है?
g = globals()
g["foo"] = "bar"
print foo # Works and outputs "bar"
फ़ंक्शन में छिपाने वाले ग्लोबल्स के पीछे तर्क क्या है? और क्या यह केवल एक बार कॉल करना बेहतर है और किसी संदर्भ को कहीं भी स्टोर करना बेहतर है या मुझे इसे हर बार कॉल करने की ज़रूरत है?
IMHO, यह, Reason for globals() in Python? का डुप्लिकेट नहीं है क्योंकि मुझे नहीं पूछ रहा हूँ क्यों globals()
मौजूद बल्कि कारण है कि यह एक समारोह (एक चर __globals__
के बजाय) होना चाहिए।
आपको शायद ही कभी डिबगिंग के बाहर ग्लोबल्स तक पहुंचने की आवश्यकता होनी चाहिए, यह संबंधित है http://stackoverflow.com/questions/12693606/reason-for-globals-in-python –
मुझे लगता है कि अगर यह एक चर था, तो यह उपयोगी जगह का उपयोग कर वर्चुअल मेमोरी में संग्रहीत किया जाएगा। एक समारोह होने के नाते, यह आपको उस जानकारी को स्वयं स्टोर करने की अनुमति देता है जब आपको वास्तव में इसकी आवश्यकता होती है (और हमेशा नहीं)। मुझे लगता है कि समारोह जाता है और वैश्विक चर के लिए खोज। तो यदि आप इसे कॉल नहीं करते हैं, तो कोई अतिरिक्त मेमोरी का उपयोग नहीं किया जाता है ... मुझे इस बारे में निश्चित नहीं है, यह सिर्फ मेरी प्रकृति है। – tomasyany
मुझे लगता है कि इस प्रश्न का उत्तर देने के लिए विशिष्ट ऐतिहासिक ज्ञान की आवश्यकता होगी, लेकिन यह देखते हुए कि 'स्थानीय लोगों को एक कार्य होना चाहिए (इसे कॉल करने के दौरान इसे निर्देशित करने की आवश्यकता है), मुझे संदेह है कि' ग्लोबल्स 'को' स्थानीय लोगों 'के साथ समरूपता के लिए एक समारोह बनाया गया था। – user2357112