2013-10-05 28 views
34

मेरे पास जावा में पृष्ठभूमि है और मैं पाइथन के लिए नया हूं। मैं यह सुनिश्चित करना चाहता हूं कि आगे बढ़ने से पहले मैं सही ढंग से पाइथन शब्दावली को समझूं।पायथन में मॉड्यूल और लाइब्रेरी के बीच क्या अंतर है?

मॉड्यूल की मेरी समझ है: एक स्क्रिप्ट जिसे पढ़ने के लिए आसान बनाने के लिए कई स्क्रिप्ट द्वारा आयात किया जा सकता है। जावा में बस आपके पास एक वर्ग है, और वह वर्ग कई अन्य वर्गों द्वारा आयात किया जा सकता है।

एक पुस्तकालय की मेरी समझ है: एक पुस्तकालय में कई मॉड्यूल शामिल जो इसके उपयोग से अलग होती है।

मेरा प्रश्न है: क्या पुस्तकालय जैसे पुस्तकालय हैं, जहां आपके पास पैकेज है food कहा जाता है, तो:

  • chocolate.py
  • sweets.py
  • biscuts.py

food पैकेज में शामिल हैं?

या करना चाहते हैं पुस्तकालयों, संकुल उपयोग करती हैं इसलिए अगर हम एक और पैकेज drink था:

  • milk.py
  • juice.py

पैकेज में निहित। library में दो पैकेज हैं?

इसके अलावा, एक एप्लीकेशन प्रोग्रामिंग इंटरफेस (एपीआई) आम तौर पर होता है पुस्तकालयों का एक सेट पदानुक्रम के शीर्ष पर यह है:

  1. एपीआई
  2. लाइब्रेरी
  3. पैकेज
  4. मॉड्यूल
  5. स्क्रिप्ट

तो एक एपीआई बंद हो जाएगा सब 2-5 से?

+0

पायथन शब्द "पैकेज" का उपयोग करता है और बहुत अधिक "लाइब्रेरी" (मानक लाइब्रेरी के अलावा) का उपयोग नहीं करता है। –

उत्तर

34

The Python Tutorial - Modules से

  • मॉड्यूल:

    एक मॉड्यूल अजगर परिभाषाएँ और बयानों वाली फ़ाइल है। फ़ाइल नाम प्रत्यय .py संलग्न मॉड्यूल नाम है।

  • पैकेज:

    संकुल "बिंदीदार मॉड्यूल नाम" का उपयोग करके पायथन के मॉड्यूल नाम स्थान की संरचना का एक तरीका है।

आप पढ़ सकते हैं import बयान के लिए प्रलेखन अधिक जानकारी के, उदाहरण के लिए देता है:

अजगर केवल एक मॉड्यूल वस्तु के प्रकार है, और सभी मॉड्यूल इस प्रकार के होते हैं इस पर ध्यान दिए बिना कि मॉड्यूल पाइथन, सी, या में कुछ और लागू किया गया है या नहीं। मॉड्यूल व्यवस्थित करने और नामकरण पदानुक्रम प्रदान करने में सहायता के लिए, पायथन में संकुल की अवधारणा है।

आप एक फाइल सिस्टम पर निर्देशिका और निर्देशिका के भीतर फ़ाइलों के रूप में मॉड्यूल के रूप संकुल के बारे में सोच सकते हैं, लेकिन इस सादृश्य भी सचमुच नहीं लेते क्योंकि संकुल और मॉड्यूल फ़ाइल प्रणाली से ही शुरू नहीं की जरूरत है। इस दस्तावेज़ीकरण के प्रयोजनों के लिए, हम इस निर्देशिकाओं और फ़ाइलों के सुविधाजनक समानता का उपयोग करेंगे। फ़ाइल सिस्टम निर्देशिकाओं की तरह, संकुल क्रमबद्ध रूप से व्यवस्थित होते हैं, और पैकेज में स्वयं उप-पैकेज, साथ ही साथ नियमित मॉड्यूल भी शामिल हो सकते हैं।

यह ध्यान रखना महत्वपूर्ण है कि सभी पैकेज मॉड्यूल हैं, लेकिन सभी मॉड्यूल पैकेज नहीं हैं। या एक और तरीका डालें, पैकेज केवल विशेष प्रकार के मॉड्यूल हैं। विशेष रूप से, __path__ विशेषता वाले किसी भी मॉड्यूल को पैकेज माना जाता है।

इसलिए अवधि module एक विशिष्ट इकाई को संदर्भित करता है: यह एक वर्ग जिसका उदाहरणों module वस्तुओं आप अजगर कार्यक्रमों में प्रयोग कर रहे हैं है। यह फ़ाइल सिस्टम में फ़ाइल को संदर्भित करने के लिए समानता के द्वारा भी प्रयोग किया जाता है, जिससे इन उदाहरण "बनाए जाते हैं"।

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

शब्द लाइब्रेरी केवल कोड के एक समूह के लिए एक सामान्य शब्द है जिसे कई अनुप्रयोगों द्वारा उपयोग करने योग्य उद्देश्य के साथ बनाया गया था। यह कुछ सामान्य कार्यक्षमता प्रदान करता है जिसे विशिष्ट अनुप्रयोगों द्वारा उपयोग किया जा सकता है।

जब कोई मॉड्यूल/पैकेज/कुछ और "प्रकाशित" होता है तो लोग अक्सर इसे लाइब्रेरी के रूप में संदर्भित करते हैं। अक्सर पुस्तकालयों में एक पैकेज या एकाधिक संबंधित पैकेज होते हैं, लेकिन यह एक एकल मॉड्यूल भी हो सकता है।

पुस्तकालय आमतौर पर कोई विशिष्ट कार्यक्षमता प्रदान नहीं करते हैं, यानी आप "लाइब्रेरी चला नहीं सकते"।

एपीआई संदर्भ के आधार पर अलग-अलग अर्थ हो सकता है। उदाहरण के लिए:

  • यह DB API या buffer protocol की तरह एक प्रोटोकॉल को परिभाषित कर सकते हैं।
  • यह एक आवेदन के साथ बातचीत करने के लिए कैसे परिभाषित कर सकते हैं (उदाहरण के लिए Python/C API)
  • जब एक पुस्तकालय/पैकेज से संबंधित यह बस अपनी कार्यक्षमता (कार्यों/वर्गों/स्थिरांक आदि का सेट)
  • के लिए कि पुस्तकालय द्वारा प्रदान की अंतरफलक

किसी भी मामले में एक एपीआई पायथन कोड नहीं है। यह एक विवरण है जो कम या ज्यादा औपचारिक हो सकता है।

16

केवल पैकेज और मॉड्यूल में पाइथन के लिए विशिष्ट परिभाषित अर्थ है।

  1. एक API कोड का एक संग्रह नहीं है दर असल - यह एक "प्रोटोकॉल" विनिर्देश कैसे विभिन्न भागों (आमतौर पर पुस्तकालयों) दूसरे के साथ संवाद की तरह है। पायथन में कुछ उल्लेखनीय "मानक" एपीआई हैं। जैसेDB API

  2. मेरी राय में, एक पुस्तकालय कुछ भी है कि नहीं है एक आवेदन - आम तौर पर submodules साथ - अजगर में, एक पुस्तकालय एक मॉड्यूल है। लाइब्रेरी का दायरा काफी परिवर्तनीय है - उदाहरण के लिए python standard library विशाल (कुछ पनडुब्बियों के साथ) है जबकि पीपीआई में बहुत से उद्देश्य पुस्तकालय हैं, उदाहरण के लिए backport of collections.OrderedDict for py < 2.7

  3. package एक सामान्य नामस्थान के तहत अजगर मॉड्यूल का संग्रह है। अभ्यास में एक विशेष __init__.py मॉड्यूल (फ़ाइल) के साथ निर्देशिका में एकाधिक पायथन मॉड्यूल लगाकर बनाया जाता है।

  4. module पाइथन कोड की एक फ़ाइल है जो आयातित है। अभ्यास के बाद से यह कुछ सरलता है क्योंकि कुछ मॉड्यूल और उस मामले में कुछ खास करें।

  5. एक स्क्रिप्ट 'मुख्य' कार्यक्रम के रूप में मार डाला है कि करने के लिए है अजगर कोड की एक फ़ाइल है।

  6. यदि आपके पास कोड का एक सेट है जो एकाधिक फ़ाइलों को फैलाता है, तो संभवतः आपके पास स्क्रिप्ट के बजाय एप्लिकेशन है।

संबंधित मुद्दे