अन्य प्रोग्रामिंग भाषाओं के विपरीत, पायथन को मुख्य फ़ंक्शन से स्पष्ट रूप से कोड निष्पादन शुरू करने के लिए डिज़ाइन नहीं किया गया है। __name__ नामक एक विशेष वेरिएबल मुख्य फ़ंक्शन की कार्यक्षमता प्रदान करता है। चूंकि यह पायथन भाषा में एक अंतर्निहित वेरिएबल है, हम इस वेरिएबल का मान देखने के लिए सिर्फ एक प्रोग्राम लिख सकते हैं जैसा कि नीचे दिखाया गया है।
print(type(__name__)) print(__name__)
उपरोक्त कोड चलाने पर निम्न परिणाम मिलता है:
__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__": कोड का उपयोग किया जाता है, पायथन इंटरप्रेटर जांचता है कि क्या यह वर्तमान में निष्पादित स्क्रिप्ट को पार्स कर रहा है, या क्या यह अस्थायी रूप से किसी अन्य बाहरी स्क्रिप्ट को पार्स कर रहा है। इस तरह प्रोग्रामर के पास परिदृश्यों के आधार पर बाहरी स्क्रिप्ट के साथ-साथ वर्तमान में निष्पादित स्क्रिप्ट से कोड की लाइनों को चलाने का चयन करके प्रोग्राम के विभिन्न हिस्सों के व्यवहार को नियंत्रित करने की क्षमता होती है।