जब पायथन इंटरप्रेटर एक सोर्स फ़ाइल पढ़ता है, तो यह उसमें पाए गए सभी कोड को निष्पादित करता है।
स्पेशल वेरिएबल `__name__`
कोड निष्पादित करने से पहले, इंटरप्रेटर कुछ विशेष वेरिएबल परिभाषित करता है। यदि पायथन इंटरप्रेटर उस मॉड्यूल (सोर्स फ़ाइल) को मुख्य प्रोग्राम के रूप में चला रहा है, तो यह विशेष `__name__` वेरिएबल का मान `"__main__"` सेट करता है। यदि यह फ़ाइल किसी अन्य मॉड्यूल से इम्पोर्ट की जा रही है, तो `__name__` को उस मॉड्यूल के नाम पर सेट किया जाता है।
इसका उपयोग क्यों करें?
कभी-कभी आप एक मॉड्यूल (.py फ़ाइल) लिखते हैं जिसे सीधे निष्पादित किया जा सकता है। वैकल्पिक रूप से, इसे किसी अन्य मॉड्यूल में इम्पोर्ट करके उपयोग भी किया जा सकता है। इस मुख्य जांच (main check) को करके, आप उस कोड को केवल तभी निष्पादित कर सकते हैं जब आप मॉड्यूल को प्रोग्राम के रूप में चलाना चाहते हैं, न कि तब जब कोई केवल आपके मॉड्यूल को इम्पोर्ट करके आपके फ़ंक्शन कॉल करना चाहता हो।
उदाहरण
one.py
def func():
print("func() in one.py")
print("Root of one.py")
if __name__ == "__main__":
print("one.py is being run directly")
else:
print("one.py is being imported")
two.py
import one
print("Root of two.py")
one.func()
if __name__ == "__main__":
print("two.py is being run directly")
else:
print("two.py is being imported")
आउटपुट
`python one.py` चलाने पर:
Root of one.py
one.py is being run directly
`python two.py` चलाने पर:
Root of one.py
one.py is being imported
Root of two.py
func() in one.py
two.py is being run directly
सारांश
- `__name__ == "__main__"` जांचता है कि स्क्रिप्ट सीधे चलाई गई है या इम्पोर्ट की गई
- यह टेस्ट कोड या डेमो कोड को इम्पोर्ट के दौरान चलने से रोकता है
- पायथन में मॉड्यूल डिजाइन का एक सर्वोत्तम अभ्यास है