2014-11-03 32 views
6

सशर्त उपयोग करते समय पाइथन के साथ कुछ वापस करने का उचित तरीका निम्न में से कौन सा है? फर्क पड़ता है क्या? और क्यों?कौन सा पायथन सशर्त रिटर्न स्टेटमेंट सबसे पायथनिक है?

# OPTION 1 
if conditional: 
    return a 
else: 
    return b 


# OPTION 2 
if conditional: 
    return a 
return b 
+0

अन्यथा अनावश्यक है –

+1

मुझे यकीन नहीं है कि आप समझते हैं कि वाक्य रचनात्मक रूप से सही अर्थ क्या है .. या आपका शिक्षक –

+0

तकनीकी रूप से वे दोनों वाक्य रचनात्मक रूप से मान्य नहीं हैं। – IanAuld

उत्तर

12

उचित अजगर तरीका होगा:

return conditional 

"Simple is better than complex" याद है? :)


आपकी संपादित प्रश्न के बारे में, मैं # OPTION 2 क्योंकि "Flat is better than nested." का प्रयोग करेंगे और इस समाधान एक खरोज स्तर बचाता है। आप इस सराहना करेंगे जब:

return b 

वास्तव में की तरह कुछ है:

return very_long_and_unwieldy_name_that_you_cannot_change 

इसके अलावा, इस मामले में else: है अनावश्यक (दोनों वाक्य रचना के साथ-साथ नेत्रहीन के रूप में) और अनावश्यक; यह बस अंतरिक्ष बर्बाद कर देता है।

जिसके अनुसार, आप का उपयोग कर एक conditional expression बजाय विचार कर सकते हैं:

return a if conditional else b 

यह एक बहुत ही संक्षिप्त और सुरुचिपूर्ण विकल्प जब a, conditional, और b सब अच्छा और कम हो रहा है।

+2

+10000000000000 यदि मैं कर सकता था ... यह एक भयानक पैटर्न है (ओपी में) कि मैं हर समय –

+3

देखता हूं यदि 'सशर्त' सख्त बूलियन मान नहीं देता है और आप उसे चाहते हैं, तो 'वापसी बूल (सशर्त) – kindall

+0

मानता है कि 'सशर्त' एक बूलियन अभिव्यक्ति है। यदि यह एक अभिव्यक्ति है जो एक गैर-बूलियन मान देता है जिसे बूलियन के रूप में व्याख्या किया जाएगा, तो ओपी का निर्माण (उनमें से कोई भी) आवश्यक है। –

0

मुझे लगता है कि यह एक चाल सवाल हो सकता है। एक else खंड, कुछ और है कि एक सूट का परिचय है, एक : चरित्र में समाप्त करने के लिए है की तरह

if conditional: 
    return True 
else 
    return False 

अजगर में,: पहले एक वाक्य रचना सही नहीं है।

यदि आप इसे ठीक करते हैं, तो वे दोनों वाक्य रचनात्मक रूप से मान्य हैं, और दोनों अर्थात् अर्थपूर्ण हैं। वास्तव में, वे एक ही बात का मतलब है। वे लगभग उसी कोड को संकलित भी करेंगे, सिवाय इसके कि पहले व्यक्ति पाइथन को तीसरे "फ़ंक्शन के अंत से गिरने" के मामले में कुछ अतिरिक्त कोड उत्पन्न कर सकता है, जिसे कभी नहीं कहा जाता है।

लेकिन, iCodez's answer बताते हैं, ये दोनों एक विरोधी पैटर्न हैं; बस return conditional, या return bool(conditional), उचित के रूप में।

ध्यान दें कि यहां तक ​​कि इस मामले में जहां का मूल्यांकन conditional एक अपवाद को जन्म देती है, अलग अलग संभावनाएं हैं अभी भी सब बराबर (ट्रैस बैक की सामग्री तक) -they'll सब सिर्फ इतना है कि अपवाद बढ़ा।

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