नामस्थान स्कोप को लागू करने का एक तरीका है।
जावा (या सी) में संकलक निर्धारित करता है कि स्थैतिक स्कोप विश्लेषण के माध्यम से एक चर दिखाई देता है।
सी में, दायरा या तो एक समारोह का शरीर है या यह वैश्विक है या यह बाहरी है। कंपाइलर आपके लिए यह कारण बताता है और स्कोप नियमों के आधार पर प्रत्येक परिवर्तनीय नाम को हल करता है। सभी मॉड्यूल संकलित किए जाने के बाद लिंकर द्वारा बाहरी नाम हल किए जाते हैं।
जावा में, दायरा एक विधि समारोह, या कक्षा के सभी तरीकों का शरीर है। कुछ वर्ग नामों में मॉड्यूल-स्तरीय दायरा भी होता है। फिर, कंपाइलर संकलन समय पर इसका आंकड़ा करता है और स्कोप नियमों के आधार पर प्रत्येक नाम को हल करता है।
पायथन में, प्रत्येक पैकेज, मॉड्यूल, कक्षा, फ़ंक्शन और विधि फ़ंक्शन में "नेमस्पेस" होता है जिसमें परिवर्तनीय नाम हल किए जाते हैं। इसके अलावा एक वैश्विक नेमस्पेस है जिसका उपयोग स्थानीय नामस्थान में नहीं है।
प्रत्येक वैरिएबल नाम स्थानीय नेमस्पेस (फ़ंक्शन का बॉडी, मॉड्यूल इत्यादि) में चेक किया गया है, और उसके बाद वैश्विक नेमस्पेस में चेक किया गया है।
चर आमतौर पर केवल स्थानीय नामस्थान में बनाए जाते हैं। global
और nonlocal
कथन स्थानीय नामस्थान के अलावा अन्य चर बना सकते हैं।
जब कोई फ़ंक्शन, विधि फ़ंक्शन, मॉड्यूल या पैकेज का मूल्यांकन किया जाता है (यानी, निष्पादन शुरू होता है) नामस्थान बनाया जाता है। इसे "मूल्यांकन संदर्भ" के रूप में सोचें। जब कोई फ़ंक्शन या विधि फ़ंक्शन इत्यादि निष्पादन समाप्त करता है, तो नामस्थान गिरा दिया जाता है। चर गिराए गए हैं। वस्तुओं को भी गिराया जा सकता है।
स्रोत
2010-10-12 10:05:36
कुछ अन्य PHP व्यक्ति को कुछ घंटों पहले नामस्थानों में समस्याएं आ रही थीं: http://stackoverflow.com/questions/3909002/ शायद पढ़ने के लायक हो। –