2011-02-26 21 views
18

अगर मैं कुछ मॉड्यूल ModX कहा जाता है, आयात करने के लिए थे कि कहआयात मोडक्स और मोडक्स आयात * के बीच क्या अंतर है?

from modx import * 

सभी सामग्री को प्रत्येक किसी भी तरह से आयात नहीं किया जा चाहेंगे से अलग हो सकता है? यह केवल स्पष्ट करने के लिए अजगर में है। जवाब देने के लिए कई फैक के साथ

उत्तर

31

आप import somemodule हैं निहित ग्लोबल्स somemodule.someglobal के माध्यम से उपलब्ध होंगे। यदि आप from somemodule import * अपने सभी ग्लोबल्स (या __all__ में सूचीबद्ध होने पर सूचीबद्ध हैं) ग्लोबल्स बनाए जाएंगे, यानी आप इसके सामने मॉड्यूल नाम के बिना someglobal का उपयोग करके उन्हें एक्सेस कर सकते हैं।

from module import * का उपयोग करके निराश हो गया है क्योंकि यह वैश्विक दायरे को रोकता है और यदि आप कई मॉड्यूल से सामान आयात करते हैं तो आपको विवादों और मौजूदा कक्षाओं/कार्यों को ओवरराइट करने की संभावना है।

0

आम सवाल ... यहाँ एक है: http://effbot.org/zone/import-confusion.htm

अनिवार्य रूप से अपने विशिष्ट प्रश्न दूसरा रूप जवाब देने के लिए (from modx import *) आप केवल ModX में सार्वजनिक आइटम प्राप्त

15

a को परिभाषित करता है, तो a.b और a.c ...

import a 
a.b() 
a.c() 

बनाम

from a import b 
b() 
c() # fails because c isn't imported 

बनाम

from a import * 
b() 
c() 

ध्यान दें कि from foo import * आम तौर पर पर सिकोड़ी है के बाद से:

+०१२३५१६४१०६
  1. यह आप ठीक नियंत्रण
  2. दे रही है यह टकराव पैदा कर सकता है बिना ग्लोबल नेम स्पेस में बातें कहते हैं, कारण सब कुछ ग्लोबल नेम स्पेस में किया जा रहा करने के लिए
  3. यह बनाता है यह स्पष्ट नहीं क्या वास्तव में वर्तमान फ़ाइल में परिभाषित किया गया है , जो परिभाषित किया गया है उसकी सूची के आधार पर यह परिभाषित किया जा सकता है कि क्या आयात किया गया है।
संबंधित मुद्दे