के रूप में आयात के अन्य रूपों के लिए विरोध from xyz import *
की "लाभ" (हाँ, लगभग ... [देखना (क) नीचे] सब कुछ) वर्तमान मॉड्यूल के तहत नामित मॉड्यूल से आयात करता है कि यह सब कुछ है। यह आयातित मॉड्यूल से मॉड्यूल के नाम के साथ उपसर्ग किए बिना विभिन्न ऑब्जेक्ट्स (चर, कक्षाएं, विधियां ...) का उपयोग करने की अनुमति देता है।उदाहरण
>>> from math import *
>>>pi
3.141592653589793
>>>sin(pi/2)
>>>1.0
(वर्तमान नाम स्थान में आयात * के) इस अभ्यास के लिए है, लेकिन हतोत्साहित क्योंकि यह यह
- अवसर नाम स्थान टकराव के लिए प्रदान करता है (कहते हैं कि यदि आप एक चर नाम अनुकरणीय था आयात से पहले)
- अक्षम हो सकता है, अगर आयातित वस्तुओं की संख्या बड़ी है।
- स्पष्ट रूप से चर/विधि/वर्ग के मूल दस्तावेज़ नहीं है
आमतौर पर हम इसलिए इस आयात को सीमित (यह इस कोड में भविष्य की यात्रा के लिए कार्यक्रम की "आत्म प्रलेखन" अच्छा है) * तदर्थ परीक्षण और की तरह, और बदले के लिए अभ्यास:
स्पष्ट रूप से कुछ वस्तुओं केवल
>>>from math import pi
>>>pi
>>>3.141592653589793
>>> sin(pi/2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sin' is not defined
या आधुनिक आयात आयात अपने स्वयं के नाम स्थान तहत ule (या एक उपनाम क्या है, विशेष रूप से अगर यह एक लंबे नाम है, और कार्यक्रम अपनी वस्तुओं का संदर्भ में कई बार)
>>>import math
>>>math.pi
>>>3.141592653589793
etc..
>>>import math as m #bad example math being so short and standard...
>>>m.pi
>>>3.141592653589793
etc..
देखें Python documentation on this topic
(क) विशेष रूप से, from xyz import *
यदि xyz मॉड्यूल __all__
वैरिएबल को परिभाषित करता है, तो यह अनुक्रम में परिभाषित सभी नाम आयात करेगा, अन्यथा यह सभी नाम आयात करेगा, सिवाय इसके कि एक अंडरस्कोर से शुरू होता है।
'yadda.yadda import * से' पायथन कमांड लाइन में चीजों पर हैकिंग करते समय सबसे उपयोगी है, उदाहरण के लिए जब आप एक कैलकुलेटर के रूप में पायथन का उपयोग कर रहे हैं और आप बस 'गणित आयात * से टाइप करें'। एक मॉड्यूल में, यह परेशानी के लिए पूछ रहा है। साथ ही, यदि आप एकल-फ़ाइल मॉड्यूल आयात करते हैं (निर्देशिका के विपरीत), 'से ... आयात *' उन प्रतीकों को आयात नहीं करेगा जिनके नाम '_' से शुरू होते हैं। –