पायथन में इन आयातों में क्या अंतर है और आप इनका उपयोग कब करेंगे? कितने बिंदु "।" क्या हम उपयोग कर सकते हैं?
from something import this
from .. import this
from . import this
3 जवाब
व्याख्या
कल्पना कीजिए कि हमारे पास निम्नलिखित संरचना है:
| my_package
| __init__.py
|___ inner_package
| __init__.py
| foo.py
| bar.py
|___ even_more_inner_package
| inner_foo.py
|___ __init__.py
| main.py
पहला from something import this
शीर्ष एप्लिकेशन पैकेज से आयात करता है, जिसका अर्थ है कि अगर हम अपनी फ़ाइलों में कहीं भी inner_package
से कुछ आयात करना चाहते हैं, तो हमें इसे इस तरह करना होगा:
from my_package.inner_package import foo
दूसरे और तीसरे आयात विवरण को सापेक्ष आयात के रूप में भी जाना जाता है, जो फ़ोल्डर के रूप में बिल्कुल काम करता है:
दूसरा कथन from .. import something
का अर्थ है "ऊपरी पैकेज से, कुछ आयात करें"। कल्पना कीजिए कि हम inner_foo.py
के अंदर हैं, जो my_package.inner_package.even_more_inner_package
के अंदर है, हम bar.py
आयात करने के लिए निम्न कार्य कर सकते हैं:
# This statement goes one package up and looks for bar
from .. import bar
अंतिम from . import something
कथन का अर्थ है "इस मौजूदा पैकेज से, कुछ आयात करें"। यदि हम bar.py
से कोड लिख रहे थे और foo.py
आयात करना चाहते थे तो हम इसका उपयोग कर सकते थे:
from . import foo
ध्यान दें
आप शीर्ष स्तर के पैकेज पर सापेक्ष आयात from ..
का उपयोग नहीं कर सकते। इस उदाहरण में, from .. import my_package
को main.py
के अंदर क्रियान्वित करने से एक ImportError
बढ़ जाएगा।
यह काफी हद तक Unix
जैसा ही है।
जिस तरह से आप cd ..
करते हैं, इसका मतलब है कि आप पैरेंट डीआईआर में जाना चाहते हैं।
और, cd .
का अर्थ है वर्तमान डीआईआर।
इसे सापेक्ष आयात कहा जाता है। एक सापेक्ष आयात वर्तमान स्थान के सापेक्ष आयात किए जाने वाले संसाधन को निर्दिष्ट करता है—अर्थात वह स्थान जहां आयात विवरण है।
एक एकल बिंदु का अर्थ है कि संदर्भित मॉड्यूल या पैकेज वर्तमान स्थान के समान निर्देशिका में है। दो बिंदुओं का अर्थ है कि यह वर्तमान स्थान की मूल निर्देशिका में है—अर्थात, ऊपर दी गई निर्देशिका। तीन बिंदुओं का मतलब है कि यह दादा-दादी निर्देशिका में है, और इसी तरह।
मान लीजिए:
└── project
├── package1
│ ├── module1.py
│ └── module2.py
└── package2
├── __init__.py
├── module3.py
├── module4.py
└── subpackage1
└── module5.py
फ़ाइल सामग्री मान लें:
package1/module2.py contains a function, function1.
package2/__init__.py contains a class, class1.
package2/subpackage1/module5.py contains a function, function2.
आप function1 को package1/module1.py फ़ाइल में इस प्रकार आयात कर सकते हैं:
from .module2 import function1
आप इस तरह से package2/module3.py फ़ाइल में class1 और function2 आयात कर सकते हैं:
from . import class1
from .subpackage1.module5 import function2
एक अच्छा स्रोत: निरपेक्ष बनाम सापेक्ष आयात
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।