यह आपको लाइब्रेरी (इसे आयात करके) या किसी एप्लिकेशन के प्रारंभिक बिंदु के रूप में एक ही फ़ाइल का उपयोग करने की अनुमति देता है।
# hello.py
def hello(to=__name__):
return "hello, %s" % to
if __name__ == "__main__":
print hello("world")
आप दो तरह से है कि कोड का उपयोग कर सकते हैं:
उदाहरण के लिए, निम्न फ़ाइल पर विचार करें। एक के लिए, आप एक प्रोग्राम लिख सकते हैं जो इसे आयात करता है। आप पुस्तकालय आयात करते हैं, __name__
पुस्तकालय का नाम होगा और इस तरह की जांच विफल हो जाएगा, और कोड निष्पादित नहीं होगा (जो वांछित व्यवहार है):
#program.py
from hello import hello # this won't cause anything to print
print hello("world")
आप लिखने के लिए नहीं करना चाहते हैं
$ python hello.py
hello, __main__
यह व्यवहार सभी विशेष चर __name__
जो अजगर कि क्या पुस्तकालय आयातित या द्वारा सीधे चलाया जाता है के आधार पर सेट हो जाएगा पर निर्भर करता है: यह दूसरी फ़ाइल, आप सीधे की तरह कुछ के साथ कमांड लाइन से अपने कोड चला सकते हैं दुभाषिया। यदि सीधे चलाया जाता है तो इसे __main__
पर सेट किया जाएगा। अगर आयात किया गया तो इसे लाइब्रेरी नाम पर सेट किया जाएगा (इस मामले में, hello
)।
अक्सर यह निर्माण आपके कोड में यूनिट परीक्षण जोड़ने के लिए उपयोग किया जाता है। इस तरह, जब आप एक लाइब्रेरी लिखते हैं तो आप बिना किसी चिंता के फ़ाइल में परीक्षण कोड एम्बेड कर सकते हैं कि जब लाइब्रेरी सामान्य तरीके से उपयोग की जाती है तो इसे निष्पादित किया जाएगा। जब आप लाइब्रेरी का परीक्षण करना चाहते हैं, तो आपको किसी भी ढांचे की आवश्यकता नहीं है क्योंकि आप लाइब्रेरी को चला सकते हैं जैसे कि यह एक प्रोग्राम था।
भी देखें __main__
in the python documentation (हालांकि यह उल्लेखनीय विरल है)
स्रोत
2011-11-22 12:11:35
ओह, मैं देख रहा हूँ ... 'अगर __name __ =" __ मुख्य __ ":' चेकों सूख स्क्रिप्ट एक स्टैंडअलोन या एक मॉड्यूल है। – Adobe
कॉपी-पेस्टर्स और/या भ्रम से बचने के लिए, पूर्व टिप्पणी में टाइपो से अवगत रहें: 'if __name __ ==" __ मुख्य __ ":' – alberto