नेमस्पेस पायथन में स्कोप (scope) को लागू करने का एक तरीका है। पायथन में प्रत्येक पैकेज, मॉड्यूल, क्लास, फ़ंक्शन और मेथड फ़ंक्शन का अपना एक "नेमस्पेस" होता है जिसमें वेरिएबल नामों को हल (resolve) किया जाता है।
सरल शब्दों में नेमस्पेस
इसे एक "मूल्यांकन संदर्भ" (evaluation context) के रूप में सोचें। जब कोई फ़ंक्शन, मॉड्यूल या पैकेज मूल्यांकन किया जाता है (यानी निष्पादन शुरू होता है), तो एक नेमस्पेस बनाया जाता है। जब फ़ंक्शन आदि का निष्पादन समाप्त होता है, तो नेमस्पेस हटा दिया जाता है और वेरिएबल भी हटा दिए जाते हैं।
इसके अलावा एक ग्लोबल नेमस्पेस भी होता है जिसका उपयोग तब किया जाता है जब नाम लोकल नेमस्पेस में नहीं मिलता।
नेमस्पेस लुकअप नियम
प्रत्येक वेरिएबल नाम की जांच पहले लोकल नेमस्पेस (फ़ंक्शन का शरीर, मॉड्यूल आदि) में की जाती है, फिर ग्लोबल नेमस्पेस में।
वेरिएबल निर्माण
वेरिएबल आमतौर पर केवल लोकल नेमस्पेस में बनाए जाते हैं। global और nonlocal स्टेटमेंट अन्य नेमस्पेस में वेरिएबल बना सकते हैं।
आसान उदाहरण
x = 10 # ग्लोबल नेमस्पेस
def func():
y = 20 # लोकल नेमस्पेस
print(x) # ग्लोबल से x लेता है
print(y) # लोकल से y लेता है
func()
मुख्य बिंदु
- नेमस्पेस = नाम → ऑब्जेक्ट का मैपिंग
- लोकल, ग्लोबल, बिल्ट-इन नेमस्पेस होते हैं
- LEGB नियम: Local → Enclosing → Global → Built-in