पायथन में एक मॉड्यूल और एक पुस्तकालय के बीच अंतर क्या है?


86

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

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

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

मेरा सवाल है: क्या पुस्तकालयों जैसे पैकेज हैं, जहां आपके पास एक पैकेज है जैसे कि कहा जाता है food, फिर:

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

foodपैकेज में निहित हैं ?

या लाइब्रेरीज़ पैकेज का उपयोग करते हैं, इसलिए यदि हमारे पास एक और पैकेज था drink:

  • milk.py
  • juice.py

पैकेज में निहित है। libraryदो संकुल में शामिल है?

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

  1. एपीआई
  2. पुस्तकालय
  3. पैकेज
  4. मापांक
  5. लिपि

तो एक एपीआई 2-5 से सभी शामिल होगा?


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

जवाबों:


75

से मॉड्यूल - अजगर ट्यूटोरियल

  • मॉड्यूल :

    एक मॉड्यूल एक फाइल है जिसमें पायथन परिभाषाएँ और कथन हैं। फ़ाइल नाम मॉड्यूल प्रत्यय के साथ मॉड्यूल का नाम .pyहै।

  • पैकेज :

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

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

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

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

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

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

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

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

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

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

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

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

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


37

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

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

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

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

  4. एक मॉड्यूल अजगर कोड की एक एकल फ़ाइल है जिसे आयात किया जाना है । यह एक सरलीकरण का एक सा है क्योंकि व्यवहार में काफी कुछ मॉड्यूल का पता चलता है जब वे स्क्रिप्ट के रूप में चलाए जाते हैं और उस मामले में कुछ विशेष करते हैं।

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

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


1

पुस्तकालय: यह मॉड्यूल का एक संग्रह है।

(लाइब्रेरी में या तो मॉड्यूल में बनाया गया है (सी में लिखा गया है) + अजगर में लिखा मॉड्यूल)।

मॉड्यूल: मानकीकृत भागों या स्वतंत्र इकाइयों का एक सेट जिसका उपयोग अधिक जटिल संरचना के निर्माण के लिए किया जा सकता है।

(अनौपचारिक भाषा में बात हो रही है, एक मॉड्यूल से बचने के सूखने के लिए, कोड की लाइनें जो एक विशेष उद्देश्य के लिए उपयोग किया जाता है और अन्य कार्यक्रमों में इस्तेमाल किया जा सकता के रूप में यह है की सेट कर दिया जाता डी on't आर EPEAT Y एक टीम और पर ध्यान केंद्रित कर के रूप में ourself) मुख्य आवश्यकता। स्रोत

एपीआई अन्य अनुप्रयोगों के लिए एक पुस्तकालय है जो सीधे पहुंच के बिना आपकी लाइब्रेरी के साथ बातचीत करने के लिए है।

पैकेज मूल रूप से फाइलों के साथ एक निर्देशिका है।

स्क्रिप्ट का अर्थ है किसी एकल फ़ाइल के भीतर आदेशों की श्रृंखला।


0

मैं शुरुआती शब्दों का उपयोग किए बिना इसका उत्तर देने का प्रयास करूंगा, और शुरुआती "आधिकारिक" और / या सबसे अधिक समझे जाने वाले या शब्दों के समान उपयोग के साथ-साथ अलग-अलग उपयोग क्यों या कैसे करें, यह बताएगा।

यह भ्रामक हो सकता है, और मैंने खुद को कठिन सोचने के लिए भ्रमित किया है, इसलिए इसके बारे में ज्यादा मत सोचो। वैसे भी संदर्भ बहुत मायने रखता है।

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

मॉड्यूल - एक मॉड्यूल एक फ़ाइल को संदर्भित करता है। फ़ाइल में 'स्क्रिप्ट' है और फ़ाइल का नाम मॉड्यूल का नाम है, पायथन फाइलें खसखस ​​के साथ समाप्त होती हैं। सभी फ़ाइल में कोड होता है जो एक साथ चलता है, कुछ काम करता है, फ़ंक्शन का उपयोग करके, स्ट्रिंग्स ect। मुख्य मॉड्यूल जिन्हें आप संभवतः सबसे अधिक बार देखते हैं वे लोकप्रिय हैं क्योंकि वे विशेष मॉड्यूल हैं जो अन्य फ़ाइलों / मॉड्यूल से जानकारी प्राप्त कर सकते हैं। यह भ्रामक है क्योंकि फ़ाइल और मॉड्यूल का नाम बराबर है और बस .py को छोड़ दें। वास्तव में यह सिर्फ कोड है जिसे आप किसी के द्वारा लिखे गए शॉर्टकट के रूप में उपयोग कर सकते हैं ताकि कुछ आसान या संभव हो सके।

पैकेज - यह आमतौर पर कभी-कभी इस्तेमाल किया जाने वाला एक शब्द है, हालांकि संदर्भ में फर्क पड़ता है। मेरे अनुभव से सबसे आम उपयोग कई मॉड्यूल (या फाइलें) हैं जो एक साथ समूहीकृत हैं। उन्हें एक साथ क्यों रखा जाता है, यह कुछ कारणों से हो सकता है, जब संदर्भ मायने रखता है। ये वे तरीके हैं जिन पर मैंने शब्द पैकेज देखा हैउपयोग किया गया। वे डाउनलोडेड, निर्मित और / या संग्रहीत मॉड्यूल का एक समूह हैं। जो सभी सच हो सकते हैं, या केवल 1, लेकिन वास्तव में यह सिर्फ एक फाइल है जो अन्य फाइलों को संदर्भित करती है, जिसे सही संरचना या प्रारूप में होना चाहिए, और यह संपूर्ण योग पैकेज ही है, स्थापित या शामिल किया जा सकता है। अजगर सामान्य पुस्तकालय। एक पैकेज में मॉड्यूल (.py फाइलें) हो सकते हैं क्योंकि वे एक-दूसरे पर निर्भर होते हैं और कभी-कभी सही ढंग से या बिल्कुल भी काम नहीं कर सकते हैं। पैकेज के प्रत्येक भाग (मॉड्यूल / फ़ाइल) का हमेशा एक सामान्य लक्ष्य होता है, और सभी भागों का कुल योग पैकेज ही होता है।

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

अधिकांश भ्रम एक साधारण फ़ाइल फ़ाइल नाम या एक फ़ाइल के लिए उपसर्ग से आते हैं, जिसे मॉड्यूल नाम के रूप में फिर पैकेज नाम से उपयोग किया जाता है।

याद रखें कि मॉड्यूल और पैकेज स्थापित किए जा सकते हैं। लाइब्रेरी आमतौर पर मॉड्यूल और पैकेज के समूह को सूचीबद्ध करने या प्रारूपित करने के लिए एक सामान्य शब्द है। बहुत कुछ सामान्य पुस्तकालय की तरह है। एक पदानुक्रम काम नहीं करेगा, एपीआई वास्तव में नहीं होते हैं, और यदि आप करते हैं तो वे कहीं भी हो सकते हैं और स्क्रिप्ट, मॉड्यूल और पैकेज से जुड़े हर वेयर, वर्ल लाइब्रेरी एक ऐसा सामान्य शब्द है, जो आसानी से कई चीजों पर लागू होता है, एपीआई को भी सक्षम बनाता है। उसके ऊपर या नीचे बैठने के लिए। कुछ मॉड्यूल अन्य कोड के आधार पर हो सकते हैं, और यह एकमात्र समय है जब मुझे लगता है कि यह एक शुद्ध पायथन संबंधित चर्चा से संबंधित होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.