2011-10-13 9 views
6

मैं जानना चाहता हूं कि नीचे मॉड्यूल कोड लिखने का कोई तरीका है, बिना किसी मॉडेंट कोड को एक और इंडेंटेशन स्तर जोड़ने के लिए।क्या एक पाइथन मॉड्यूल आयात को वापसी की तरह कुछ खत्म करना संभव है?

# module code 
if not condition: 
    # rest of the module code (big) 

मैं कुछ इस तरह रहा हूँ:

# module code 
if condition: 
    # here I need something like a `return` 
# rest of the module code (big) 

ध्यान दें, मैं एक अपवाद फेंक नहीं करना चाहती, आयात सामान्य रूप से पास करना चाहिए।

+9

मुझे इसके किसी भी समाधान के बारे में पता नहीं है, लेकिन मुझे लगता है कि आप अपने सभी कोड को आंतरिक मॉड्यूल में डाल सकते हैं और आयात कर सकते हैं कि अगर स्थिति पूरी नहीं हुई है। – UncleZeiv

+0

@UncleZeiv: यह एक अच्छा विचार है, आपको इसे उत्तर के रूप में पोस्ट करना चाहिए! – SingleNegationElimination

+0

इंडेंटेशन के विचलन के साथ क्या है? –

उत्तर

5

मुझे इसके किसी भी समाधान के बारे में पता नहीं है, लेकिन मुझे लगता है कि आप अपने सभी कोड को आंतरिक मॉड्यूल में डाल सकते हैं और आयात कर सकते हैं कि अगर स्थिति पूरी नहीं हुई है।

+0

धन्यवाद, अगर कुछ दिनों में कोई बेहतर विचार नहीं आता है तो यह सही उत्तर बनी हुई है। – sorin

1

मुझे यह करने का कोई तरीका नहीं है। एकमात्र चीज जिसे मैं कल्पना कर सकता हूं कि काम करेगा return होगा लेकिन इसे एक समारोह के अंदर होना चाहिए।

0

यह जानने के बिना कि आपके उच्च-स्तरीय लक्ष्य क्या है, यह कहना मुश्किल है। (उदाहरण के लिए, हालत क्या है? इससे कोई फर्क क्यों पड़ता है? क्या आप सुनिश्चित हैं कि आपको XY समस्या नहीं है? क्या आप हमें बता सकते हैं कि आपका समग्र लक्ष्य क्या है?) यह जानने के बिना भी कहना मुश्किल है मॉड्यूल कैसे कहा जा रहा है। (कमांड लाइन से एक स्क्रिप्ट के रूप में? किसी अन्य मॉड्यूल द्वारा आयात किया जा रहा है?) और इससे बहुत कुछ पता चल जाएगा (ए) आप इंडेंटेशन से बचने की कोशिश क्यों कर रहे हैं (WWII खत्म हो गया है, और हमें राशन रिक्त स्थान की आवश्यकता नहीं है और भी; या, इसे और अधिक दयालु रखने के लिए, पायथन एक ऐसी भाषा है जो इंडेंटेशन को एक सिंटैक्टिक फीचर के रूप में उपयोग करती है, इसलिए कह रही है कि "मैं इस वाक्य रचनात्मक सुविधा का उपयोग नहीं कर सकता" कई लोगों को अजीब बाधा के रूप में हमला करता है। यह तो छोड़ने जैसा है परीक्षण: आप सैद्धांतिक रूप से उस बाधा के आसपास काम करने में सक्षम हो सकते हैं, संभवतः, कभी-कभी, लेकिन आप अपने हाथों के साथ मुक्केबाजी की अंगूठी में क्यों जा रहे हैं?), और (बी) आप अपवाद क्यों नहीं फेंक सकते (नहीं) , वास्तव में: क्या आप पूरी तरह से सुनिश्चित हैं कि आप बिल्कुल किसी भी अपवाद को नहीं रोक सकते हैं?)।

जैसा कि आपने वास्तव में किया है, "मैं एक्स कैसे कर सकता हूं, ए, बी, और सी शर्तों को देखते हुए?" प्रश्न, यह इंगित किए बिना कि आप एक्स क्यों करना चाहते हैं, या क्यों ए, बी, और सी मौजूद हैं, या यहां तक ​​कि आप 100% सुनिश्चित हैं कि वे मौजूद हैं और आसपास काम नहीं कर सकते हैं।

यदि आप वास्तव में कह रहे हैं कि "मैं फ़ंक्शन लिखते समय {TAB} 40 बार हिट नहीं करना चाहता हूं," तो असली समस्या यह है कि आपको एक बेहतर टेक्स्ट एडिटर चाहिए। यदि आप वास्तव में कह रहे हैं कि "मुझे सौंदर्यपूर्ण रूप से अप्रिय होने के लिए इंडेंटेशन मिलना है, तो आपको (ए) तर्क के दूसरे पक्ष के बारे में सोचना चाहिए; यही कारण है कि लोग पाइथन का इंडेंटेशन का उपयोग वाक्यविन्यास के रूप में उपयोगी क्यों है; (बी) क्या इस संबंध में आपकी खुद की सौंदर्य प्राथमिकताएं आपके द्वारा आने वाले कारणों से अधिक महत्वपूर्ण हैं; और (सी) क्या, इन चीजों को देखते हुए, पाइथन आपके लिए अपने स्वयं के बड़े पैमाने पर लक्ष्य पूरा करने के लिए व्यक्तिगत रूप से उपयोग करने का सही टूल है। (इंडेन्टेशन को सिंटैक्टिक फीचर के रूप में पसंद नहीं करना ठीक है, लेकिन यह पाइथन के लिए इतना बुनियादी है कि इसे इस हद तक विरोध करने के लिए दार्शनिक रूप से इसका विरोध किया गया है कि यह एक मजबूत संकेत है कि शायद आपके प्रोग्रामिंग को पूरा करने के लिए पाइथन आदर्श भाषा नहीं है लक्ष्यों में।) यदि आप वास्तव में क्या कह रहे हैं कि आपको फैक्टरिंग कोड से लाभ होगा जिसे परिस्थितियों के दो अलग-अलग सेटों के तहत दो मॉड्यूल में चलाने की आवश्यकता है, तो इससे आपको रिफैक्टर के लिए लाभ होगा। यदि आप जो कह रहे हैं वह यह है कि आपको स्पेगेटी कोड मिला है जो मॉड्यूल आयात को रोकने की कोशिश करने से पहले, वास्तव में संबोधित करने वाली पहली समस्या है।

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