Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में नेमस्पेस और स्कोप

पायथन में हम वेरिएबल्स, फ़ंक्शन्स, लाइब्रेरीज़ और मॉड्यूल्स आदि से निपटते हैं। इस बात की संभावना है कि जिस वेरिएबल नाम का आप उपयोग करने जा रहे हैं वह पहले से ही किसी अन्य वेरिएबल के नाम के रूप में या किसी अन्य फ़ंक्शन या मेथड के नाम के रूप में मौजूद है। ऐसे परिदृश्य में, हमें यह सीखने की आवश्यकता है कि पायथन प्रोग्राम द्वारा इन सभी नामों को कैसे प्रबंधित किया जाता है। यही नेमस्पेस (namespace) की अवधारणा है।

नेमस्पेस की तीन श्रेणियां

  1. लोकल नेमस्पेस (Local Namespace): प्रोग्राम द्वारा घोषित सभी फ़ंक्शन्स और वेरिएबल्स के नाम इस नेमस्पेस में रखे जाते हैं। यह नेमस्पेस तब तक मौजूद रहता है जब तक प्रोग्राम चलता है।
  2. ग्लोबल नेमस्पेस (Global Namespace): यह नेमस्पेस पायथन प्रोग्राम में उपयोग किए जा रहे मॉड्यूल्स में शामिल सभी फ़ंक्शन्स और अन्य वेरिएबल्स के नाम रखता है। इसमें लोकल नेमस्पेस का हिस्सा शामिल होता है।
  3. बिल्ट-इन नेमस्पेस (Built-in Namespace): यह नेमस्पेस का उच्चतम स्तर है जो पायथन इंटरप्रेटर के साथ लोड किए गए प्रोग्रामिंग वातावरण के हिस्से के रूप में उपलब्ध डिफ़ॉल्ट नामों के साथ उपलब्ध है। इसमें ग्लोबल नेमस्पेस शामिल होता है जो बदले में लोकल नेमस्पेस को शामिल करता है।

पायथन में नेमस्पेस और स्कोप

पायथन में स्कोप (Scope)

नेमस्पेस का एक जीवनकाल होता है जब यह उपलब्ध होता है। इसे स्कोप भी कहा जाता है। साथ ही स्कोप उस कोडिंग क्षेत्र पर निर्भर करेगा जहां वेरिएबल या ऑब्जेक्ट स्थित है। आप नीचे दिए गए प्रोग्राम में देख सकते हैं कि आंतरिक लूप में घोषित वेरिएबल्स बाहरी लूप के लिए उपलब्ध हैं लेकिन इसके विपरीत नहीं। साथ ही कृपया ध्यान दें कि बाहरी फ़ंक्शन का नाम भी ग्लोबल वेरिएबल का हिस्सा कैसे बन जाता है।

उदाहरण


prog_var = 'Hello'

def outer_func():
    outer_var = 'x'
    def inner_func():
        inner_var = 'y'
        print(dir(), ' Local Variable in Inner function')
    inner_func()
    print(dir(), 'Local variables in outer function')

outer_func()
print(dir(), 'Global variables')

उपरोक्त कोड चलाने से हमें निम्न परिणाम मिलता है:

आउटपुट

['inner_var'] Local Variable in Inner function
['inner_func', 'outer_var'] Local variables in outer function
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'outer_func', 'prog_var'] Global variables

LEGB नियम:

पायथन नामों को निम्न क्रम में खोजता है:

  1. Local - वर्तमान फ़ंक्शन/लोकल स्कोप
  2. Enclosing - एनक्लोजिंग फ़ंक्शन का स्कोप (नेस्टेड फ़ंक्शन्स)
  3. Global - मॉड्यूल स्तर
  4. Built-in - पायथन बिल्ट-इन्स (len, print, आदि)

global और nonlocal कीवर्ड:


x = 10  # ग्लोबल

def outer():
    x = 20  # एनक्लोजिंग
    def inner():
        nonlocal x  # एनक्लोजिंग x को मॉडिफाई करें
        x = 30
    inner()
    print(x)  # 30

outer()
print(x)  # 10 (ग्लोबल अपरिवर्तित)
  1. - Python Namespace और Variable के Scope को Explain करें

    Python Namespace और Variable Scope Namespace Scope को Implement करने का एक तरीका है। Python में, प्रत्येक Package, Module, Class, Function और Method Function का अपना एक Namespace होता है जिसमें Variable Names Resolve होते हैं। जब कोई Function, Module या Package Evaluate होता है (यानी Execution शुर

  1. - Python में Namespace क्या है?

    Python में Namespace Namespace Scope को Implement करने का एक तरीका है। Python में, प्रत्येक Package, Module, Class, Function और Method Function का अपना एक Namespace होता है जिसमें Variable Names Resolve होते हैं। जब कोई Function, Module या Package Evaluate होता है (यानी Execution शुरू होता है), तो

  1. - Python वेरिएबल्स में महारत: घोषित करने और उपयोग करने के लिए एक पेशेवर गाइड

    Python में वेरिएबल्स बनाने और उपयोग करने पर एक गाइड। Python वेरिएबल्स वेरिएबल्स नामित स्थान हैं जिनका उपयोग मेमोरी में संग्रहीत ऑब्जेक्ट के रेफरेंस को स्टोर करने के लिए किया जाता है। जब हम Python में वेरिएबल्स बनाते हैं, तो हमें निम्न नियमों पर विचार करना चाहिए: वेरिएबल नाम अक्षर या अंडरस्कोर से शु