पायथन पैकेज: उन्हें कैसे बनाएं और आयात करें?

इस लेख में, आप पायथन पैकेजों का उपयोग करके अपने कोड आधार को स्वच्छ, कुशल मॉड्यूल में विभाजित करना सीखेंगे। इसके अलावा, आप अपने स्वयं के या तीसरे पक्ष के पैकेज को अपने पायथन प्रोग्राम को आयात और उपयोग करना सीखेंगे।

वीडियो: पायथन पैकेज: अपने कोड को व्यवस्थित करें

पैकेज क्या हैं?

हम आमतौर पर अपने सभी फाइलों को एक ही स्थान पर अपने कंप्यूटर पर संग्रहीत नहीं करते हैं। हम आसान पहुँच के लिए निर्देशिकाओं के सुव्यवस्थित पदानुक्रम का उपयोग करते हैं।

समान फ़ाइलों को एक ही निर्देशिका में रखा जाता है, उदाहरण के लिए, हम सभी गीतों को " संगीत " निर्देशिका में रख सकते हैं । इसके अनुरूप, पायथन में फाइलों के लिए निर्देशिका और मॉड्यूल के लिए पैकेज हैं।

जैसा कि हमारा एप्लिकेशन प्रोग्राम बहुत सारे मॉड्यूल के साथ आकार में बड़ा होता है, हम एक पैकेज में समान मॉड्यूल और अलग-अलग पैकेज में अलग-अलग मॉड्यूल रखते हैं। यह एक परियोजना (कार्यक्रम) को प्रबंधन और वैचारिक रूप से स्पष्ट करने में आसान बनाता है।

इसी तरह, एक निर्देशिका में उपनिर्देशिका और फाइलें शामिल हो सकती हैं, एक पायथन पैकेज में उप-पैकेज और मॉड्यूल हो सकते हैं।

एक निर्देशिका __init__.pyमें पायथन के नाम से एक फ़ाइल होनी चाहिए, जिसे वह एक पैकेज के रूप में मान सकता है। इस फाइल को खाली छोड़ा जा सकता है लेकिन हम आम तौर पर इस फाइल में उस पैकेज के लिए इनिशियलाइज़ेशन कोड रखते हैं।

यहाँ एक उदाहरण है। मान लीजिए हम एक खेल विकसित कर रहे हैं। पैकेज और मॉड्यूल का एक संभावित संगठन नीचे दिए गए आंकड़े में दिखाया जा सकता है।

पायथन प्रोग्रामिंग में पैकेज मॉड्यूल संरचना

एक पैकेज से मॉड्यूल आयात करना

हम डॉट (।) ऑपरेटर का उपयोग करके पैकेज से मॉड्यूल आयात कर सकते हैं।

उदाहरण के लिए, यदि हम startउपरोक्त उदाहरण में मॉड्यूल आयात करना चाहते हैं, तो यह निम्नानुसार किया जा सकता है:

 import Game.Level.start

अब, यदि इस मॉड्यूल में कोई फ़ंक्शन नाम है select_difficulty(), तो हमें इसे संदर्भित करने के लिए पूर्ण नाम का उपयोग करना चाहिए।

 Game.Level.start.select_difficulty(2)

यदि यह निर्माण लंबा लगता है, तो हम पैकेज उपसर्ग के बिना मॉड्यूल को निम्नानुसार आयात कर सकते हैं:

 from Game.Level import start

अब हम फ़ंक्शन को केवल इस प्रकार कह सकते हैं:

 start.select_difficulty(2)

एक पैकेज के भीतर एक मॉड्यूल से सिर्फ आवश्यक फ़ंक्शन (या वर्ग या चर) आयात करने का दूसरा तरीका निम्नानुसार होगा:

 from Game.Level.start import select_difficulty

अब हम सीधे इस फ़ंक्शन को कॉल कर सकते हैं।

 select_difficulty(2)

हालांकि आसान है, यह विधि अनुशंसित नहीं है। पूर्ण नाम स्थान का उपयोग भ्रम से बचाता है और दो समान पहचानकर्ता को टकराने से रोकता है।

पैकेजों को आयात करते समय, पायथन को परिभाषित किया गया निर्देशिकाओं की सूची में sys.path, मॉड्यूल खोज पथ के समान।

दिलचस्प लेख...