2013-01-04 15 views
5

हम मॉड्यूल और चर और अन्य सामान आयात करने के लिए हर समय पायथन के आयात तंत्र का उपयोग करते हैं .. लेकिन, क्या कोई ऐसा निर्यात है जो निर्यात के रूप में काम करता है? जैसे:क्या Python निर्यात की तरह कुछ भी है?

हम एक मॉड्यूल से सामान आयात:

from abc import * 

तो हम ?:

to xyz export * 

या निर्यात एक तरह निर्यात कर सकते हैं, ख, ग program.py को

मुझे पता है कि यह सवाल यहां पूछने के लिए एक सामान्य प्रकार का प्रश्न नहीं है .. लेकिन सिर्फ जिज्ञासा में .. मैंने पायथन कंसोल पर जांच की है और 'निर्यात' के रूप में मौजूद कुछ भी नहीं है .. शायद यह कुछ डी के साथ मौजूद है मामूली नाम ..?

+6

यह वास्तव में कैसे काम करेगा? – NPE

+2

आप ऐसा क्यों चाहते हैं? – delnan

+0

किसी भी चर या एक पायथन फ़ाइल या मॉड्यूल से एक विधि निर्यात करने की बजाय .. हम उस फ़ाइल से हमारे गंतव्य पर क्यों निर्यात नहीं कर सकते हैं ताकि हमारे कोड सार्वजनिक हो जाएं .. कोई भी नहीं जानता कि चर या विधियां कहां से आ रही हैं? यह सिर्फ एक पहलू है। मेरी राय .. अगर कोई आयात है तो निर्यात मौजूद होना चाहिए। :-) – khan

उत्तर

7

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

# to xyz export a, b, c 
import xyz 
xyz.a = a 
xyz.b = b 
xyz.c = c 

एक वाइल्डकार्ड निर्यात करने के लिए, आप एक पाश का उपयोग कर सकते हैं:

# to xyz export * 
exports = [(k, v) for (k, v) in globals().iteritems() if not k.startswith("_")] 
import xyz 
for k, v in exports: setattr(xyz, k, v) 

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

यह मूलतः बंदर पैचिंग का एक रूप है। इसका समय और स्थान है। बेशक, इसके लिए काम करने के लिए, "निर्यात" करने वाला मॉड्यूल स्वयं निष्पादित किया जाना चाहिए; केवल मॉड्यूल को आयात करना जो पैच किया जाएगा, जादूगर रूप से यह नहीं समझ पाएगा कि कहीं और कुछ कोड इसे पैच करने जा रहा है।

संबंधित मुद्दे