मैं पूरे कार्यक्रम को रोके बिना आयात किए जा रहे मॉड्यूल के मूल्यांकन को रोकना चाहता हूं।
मैं जो हासिल करना चाहता हूं उसका एक उदाहरण यहां दिया गया है:
main.py
print('main1') import testmodule print('main2')
testmodule.py
print(' module1') some_condition=True if some_condition: exit_from_module() # How to do this? print(' module2') # This line is not executed.
अपेक्षित उत्पादन:
main1 module1 main2
3 जवाब
मॉड्यूल के निष्पादन को रोकने का कोई अच्छा तरीका नहीं है। आप अपवाद उठा सकते हैं, लेकिन फिर आपके आयात मॉड्यूल को इससे निपटने की आवश्यकता होगी। शायद इस तरह सिर्फ रिफैक्टर:
print(' module1')
some_condition = True
if not some_condition:
print(' module2')
अपडेट: इससे भी बेहतर होगा कि आप अपने मॉड्यूल को केवल कार्यों और कक्षाओं को परिभाषित करने के लिए बदलें, और फिर कॉलर को उनमें से किसी एक को उस काम को करने के लिए आमंत्रित करें जिसकी उन्हें आवश्यकता है।
यदि आप वास्तव में आयात के दौरान यह सब काम करना चाहते हैं (याद रखें, मुझे लगता है कि यह बेहतर नहीं होगा), तो आप अपने मॉड्यूल को इस तरह बदल सकते हैं:
def _my_whole_freaking_module():
print(' module1')
some_condition = True
if some_condition:
return
print(' module2')
_my_whole_freaking_module()
मेरा main.py इस तरह दिखता है,
print 'main 1'
try:
import my_module
except ImportError:
pass
print 'main 2'
और my_module.py इस तरह दिखता है,
print 'module 1'
if True:
raise ImportError
else:
pass
print 'module 2'
आउटपुट है,
main 1
module 1
main 2
आप मॉड्यूल कोड को फ़ंक्शन के अंदर लपेट सकते हैं, जैसे:
def main():
print(' module1')
some_condition=True
if some_condition:
return
print(' module2')
main()
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।