आपने कोड की यह पंक्ति देखी होगी if __name__=='__main__': पायथन स्क्रिप्ट में बहुत कुछ, बिना यह जाने कि इसका वास्तविक उद्देश्य क्या है। चिंता न करें क्योंकि इस संक्षिप्त ब्लॉग में हम इसी पर चर्चा करेंगे
जब आप सीधे कोई प्रोग्राम या स्क्रिप्ट चलाते हैं, तो पायथन स्वचालित रूप से विशेष name वेरिएबल को "main" असाइन कर देता है। यह मूल रूप से यह इंगित करने के लिए किया जाता है कि फ़ाइल यहां "मुख्य" स्क्रिप्ट है और इसे किसी अन्य में आयात करने के बजाय सीधे चलाया जा रहा है।
इसे समझने के लिए, एक नई पायथन स्क्रिप्ट बनाएं, मान लें कि इसे "example.py" नाम दें और लिखें:
print("Name of Script: ", __name__)
इसे चलाएँ और आप आउटपुट देखेंगे स्क्रिप्ट का नाम: __main__। ऐसा केवल इसलिए है क्योंकि फ़ाइल सीधे चल रही है।
अब, एक और पायथन स्क्रिप्ट फ़ाइल बनाएं और example.py को इस फ़ाइल में आयात करें। इसे चलाएँ और आपको स्क्रिप्ट का नाम: उदाहरण कहते हुए एक अलग परिणाम दिखाई देगा। ऐसा सिर्फ इसलिए है क्योंकि अब हम इसे सीधे चलाने के बजाय स्क्रिप्ट को आयात कर रहे हैं और इसे अप्रत्यक्ष रूप से चला रहे हैं। इस प्रकार, पायथन अब फ़ाइल का वास्तविक नाम दिखा रहा है।
आइए अपनी उदाहरण फ़ाइल में कुछ बदलाव करें, ताकि हम इसे और भी बेहतर ढंग से समझ सकें।
def s_name(): print("Name of Script: ", __name__) s_name() def greet(): print("Hello! How are you doing?") if __name__=="__main__": greet()
अब यदि आप इसे सीधे चलाते हैं तो सब कुछ पूरी तरह से निष्पादित हो जाएगा लेकिन यदि आप दूसरी फ़ाइल चलाते हैं जहां आप example.py स्क्रिप्ट आयात कर रहे हैं, तो आप देखेंगे कि ग्रीट फ़ंक्शन कॉल निष्पादित नहीं हुई थी। ऐसा क्यों?
यह if सशर्त के कारण है। कंडिशनल क्या करता है कि यह जाँचता है कि फ़ाइल सीधे चल रही है या नहीं। यदि इसे सीधे चलाया जा रहा है, तो main को विशेष वेरिएबल name को सौंपा जाएगा जो इस स्थिति को सत्य बना देगा और स्थिति के अंदर सब कुछ सामान्य रूप से चलेगा।
लेकिन दूसरी ओर, यदि आप इसे किसी अन्य फ़ाइल पर आयात कर रहे हैं और इसे अप्रत्यक्ष रूप से वहां से चला रहे हैं, तो शर्त कथन सत्य नहीं होगा और जो कुछ भी सशर्त के अंदर रखा गया था वह निष्पादित नहीं होगा।
यही इस सशर्त कथन का महत्व है। जब हम किसी स्क्रिप्ट को मॉड्यूल के रूप में आयात करते हैं तो यह पायथन इंटरप्रेटर को स्वचालित रूप से कोड की अनावश्यक लाइनें चलाने से रोकता है।
हालाँकि, हम इन फ़ंक्शंस को तब भी कॉल कर सकते हैं जब हम एक स्क्रिप्ट को मॉड्यूल के रूप में आयात कर रहे हों। उदाहरण के लिए:
import example example.greet()
इस तरह हम सशर्त संतुष्ट न होने पर भी आयातित मॉड्यूल से किसी भी फ़ंक्शन को पूरी तरह से कॉल कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3