क्या करता है a। पायथन में एक आयात बयान का मतलब है?


141

मैं पायथन के multiprocessingमॉड्यूल के लिए कोड देख रहा हूं , और इसमें यह पंक्ति है:

from ._multiprocessing import win32, Connection, PipeConnection

के बजाय

from _multiprocessing import win32, Connection, PipeConnection

सूक्ष्म अंतर पहले की अवधि है _multiprocessing। इसका क्या मतलब है? अवधि क्यों?


3
इसे सापेक्ष आयात कहा जाता है: docs.python.org/tutorial/modules.html
Aillyn

इसके बिना ., यदि आपके पास _multiprocessing.pyआपकी मुख्य स्क्रिप्ट के बगल में कुछ अशोभनीय कारण के लिए फ़ाइल थी , multiprocessingतो टूट जाएगी। इसके साथ ., यह सुनिश्चित करता है कि इसे अपना मॉड्यूल मिल जाए।
क्रिस मॉर्गन

यदि .सहकर्मी मॉड्यूल को संदर्भित करता है, तो दस्तावेज का उपयोग करने के लिए क्यों कहेंगे .कि मल्टीप्रोसेसिंग मॉड्यूल नियमित sys.path पुस्तकालयों का हिस्सा होना चाहिए? क्या सवाल और क्रिस का स्पष्टीकरण उन्हें मिला देता है या मैं समझ नहीं रहा हूं? मदद की सराहना करें।
rfii

जवाबों:


120

स्पष्ट सापेक्ष आयातों के लिए यह नया वाक्यविन्यास है । इसका मतलब है कि मौजूदा पैकेज से आयात।


26
क्या परिभाषित करता है कि "वर्तमान पैकेज" क्या है?
फकचर

7
यह कहना चाहिए कि आयात पैकेज कहाँ से है । इसका मूल रूप से वर्तमान नाम स्थान या पैकेज निर्देशिका है।
कीथ

2
धन्यवाद, मुझे लगता है कि मुझे पता है कि आपका क्या मतलब है। बस स्पष्ट होने के लिए, क्या आप एक उदाहरण प्रदान करना चाहेंगे?
धोखाधड़ी

11
आप ऐसा कर सकते हैं:from . import peermodule from .. import parentpackagemodule
कीथ

2
@bmc सीखने का एक अच्छा तरीका यह है कि आप थोड़ा सा प्रयोग स्थापित करें और इसे स्वयं आजमाएँ। ;-)
कीथ

22

मॉड्यूल नाम में डॉट रिश्तेदार मॉड्यूल आयात के लिए उपयोग किया जाता है ( यहां और यहां देखें , खंड 6.4.2)।

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

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