अन्य प्रोग्रामिंग भाषाओं के विपरीत, पायथन को मुख्य फ़ंक्शन से कोड के निष्पादन को स्पष्ट रूप से प्रारंभ करने के लिए डिज़ाइन नहीं किया गया है। __name__ नामक एक विशेष चर मुख्य कार्य की कार्यक्षमता प्रदान करता है। चूंकि यह अजगर भाषा में एक अंतर्निर्मित चर है, इसलिए हम इस चर के मान को नीचे देखने के लिए एक प्रोग्राम लिख सकते हैं।
print type(__name__) print __name__
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
<type 'str'> __main__
जैसा कि आप ऊपर देख सकते हैं __name__ चर का मान स्ट्रिंग डेटा प्रकार का है और ___main__ के बराबर है।
नीचे __name__ वेरिएबल की दो प्रमुख विशेषताएं दी गई हैं।
<मजबूत>1. जब आप कोई भी अच्छी तरह से लिखित स्टैंड-अलोन पायथन स्क्रिप्ट चलाते हैं जो किसी अन्य स्क्रिप्ट का जिक्र नहीं कर रही है, तो __name__ चर का मान __main__ के बराबर होता है।
आइए standalone.py . नाम का एक प्रोग्राम लिखें इस सुविधा को स्पष्ट करने के लिए।
def func1(): print 'The value of __name__ is ' + __name__ if __name__ == '__main__': func1()
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
The value of __name__ is __main__
जैसा कि अपेक्षित था __name__ चर __main__ का मूल्यांकन करता है इसलिए आउटपुट।
<मजबूत>2. दूसरी विशेषता एक पायथन लिपि को दूसरे में आयात करने के बारे में है। ऐसे परिदृश्य में, दो अलग-अलग स्कोप प्रतीत होते हैं जिन्हें मुख्य () फ़ंक्शन के रूप में माना जा सकता है। पहला स्कोप वर्तमान में चल रहे प्रोग्राम का __main__ वेरिएबल हो सकता है और दूसरा वर्तमान प्रोग्राम में प्रयुक्त इंपोर्टेड स्क्रिप्ट के __main__ वेरिएबल का स्कोप हो सकता है।
तो किस __main__ चर का उपयोग किया जाएगा
जब आप आयातित स्क्रिप्ट से कोई फ़ंक्शन चलाते हैं, तो __name__ चर स्क्रिप्ट के वास्तविक नाम का मूल्यांकन करेगा और __main__ के बराबर नहीं होगा।
लेकिन जब आप मौजूदा प्रोग्राम से नाम वेरिएबल के मान का पता लगाते हैं, तो आयातित स्क्रिप्ट का जिक्र किए बिना, यह __main__ का मूल्यांकन करेगा जैसा कि अपेक्षित था, क्योंकि यह स्तर 0 इंडेंट पर प्रोग्राम का दायरा है।
नीचे दिया गया प्रोग्राम इस उदाहरण को दिखाता है।
उदाहरण
import standalone as sa print('Running the imported script') sa.func1() print('\n') print('Running the current script') print 'The value of __name__ is ' + __name__
आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
Running the imported script The value of __name__ is standalone Running the current script The value of __name__ is __main__है
इस दृष्टिकोण की उपयोगिता तब होती है जब कोड if __name__ =="__main__":का उपयोग किया जाता है, पायथन दुभाषिया जांचता है कि क्या यह वर्तमान में निष्पादित स्क्रिप्ट को पार्स कर रहा है, या यदि यह अस्थायी रूप से किसी अन्य बाहरी स्क्रिप्ट को पार्स कर रहा है। इस तरह प्रोग्रामर के पास बाहरी स्क्रिप्ट से कोड की पंक्तियों को चलाने के साथ-साथ परिदृश्यों के आधार पर वर्तमान में निष्पादित स्क्रिप्ट को चुनकर प्रोग्राम के विभिन्न हिस्सों के व्यवहार को नियंत्रित करने की क्षमता होती है।