मॉड्यूल बनाम पैकेज?


140

जब भी मैं यह from 'x' import 'y'सोच रहा था कि कौन सा 'मॉड्यूल' माना जाता है और कौन सा 'पैकेज' है, और यह दूसरा तरीका क्यों नहीं है?


1
इसके बारे में अन्य तरीकों से क्यों नहीं, इसके बारे में देखें stackoverflow.com/questions/3600352/…

1
मैं, एक के लिए, इस प्रश्न के लिए आभारी हूं, क्योंकि उत्तर संक्षिप्त है और सटीक आवश्यक ज्ञान देता है। दस्तावेज़ीकरण सब ठीक है और बांका है, लेकिन यह क्रिया है और इसमें वेय की अधिक जानकारी है जो ओपी पूछ रहा था, और निश्चित रूप से मेरी ज़रूरत से ज़्यादा। मैं सिर्फ उस विशिष्ट प्रश्न का उत्तर चाहता था, और नीचे दिया गया उत्तर वही है जो मैं चाहता था। हम में से कई को इस तरह के औपचारिक या गहन उत्तर की आवश्यकता नहीं है।
टेकिन

इससे संबंधित एक अवधारणा को पता है - वर्ग बनाम मॉड्यूल अजगर में
RBT

जवाबों:


192

एक पायथन मॉड्यूल बस एक पायथन स्रोत फ़ाइल है, जो कक्षाओं, कार्यों और वैश्विक चर को उजागर कर सकता है।

जब किसी अन्य पायथन स्रोत फ़ाइल से आयात किया जाता है, तो फ़ाइल नाम को नामस्थान के रूप में माना जाता है।

एक पायथन पैकेज केवल पायथन मॉड्यूल (एस) की एक निर्देशिका है।

उदाहरण के लिए, निम्नलिखित निर्देशिका वृक्ष की कल्पना करें /usr/lib/python/site-packages:

mypackage/__init__.py <-- this is what tells Python to treat this directory as a package
mypackage/mymodule.py

तो आप क्या करेंगे:

import mypackage.mymodule

या

from mypackage.mymodule import myclass

अहा, इसलिए जब आप कहते हैं कि फ़ाइल नाम को एक नामस्थान के रूप में माना जाता है, तो आप ऐसा कुछ करेंगे? पहले मामले के लिए "mymodule.var1", या दूसरे के लिए "myclass.var1"?
डार्क टेम्पलर

1
बिल्कुल नहीं। पैकेज अभी भी नाम स्थान के हिस्से के रूप में गिना जाता है। यदि आप वह करना चाहते हैं जो आपने कहा है तो आपको mypackage import mymodule से करने की आवश्यकता है।
यम मारकोविक

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

@holdenweb ने सीधे तौर पर वहां शामिल विभिन्न तंत्रों का उपयोग नहीं किया है, इसलिए विशेषज्ञ नहीं हैं। यदि आप एक नए उत्तर में इसके बारे में विस्तृत विवरण प्रदान करते हैं, तो मैं इसे मेरा उल्लेख करूँगा।
यम मार्कोविच

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