Tuesday, 15 July 2014

python - Weird Try-Except-Else-Finally behavior with Return statements -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 4 जवाब

यह कुछ कोड है अजीब तरह से बर्ताव करना यह मैंने लिखा है कि व्यवहार का एक सरलीकृत संस्करण है। यह अभी भी अजीब व्यवहार को प्रदर्शित करेगा और मेरे पास कुछ विशिष्ट प्रश्न हैं कि ऐसा क्यों हो रहा है।

मैं Windows 7 पर पायथन 2.6.6 का उपयोग कर रहा हूं।

  def demo1 (): प्रयास करें: रनटाइम को बढ़ाने के लिए, "समस्या को बल देने के लिए" को छोड़कर: वापसी 1 और: वापसी 2 अंततः: वापसी 3 डीआर डेमो 2 (): प्रयास करें: प्रयास करें: रनटाइम को बढ़ाएं, "समस्या को बल दें" को छोड़कर: वापसी 1 और: वापसी 2 अंत में: 3 को छोड़कर 3 प्रिंट करें: प्रिंट 4 अन्य: प्रिंट 5 अंततः: प्रिंट 6 यदि __name__ == "__main__": प्रिंट "*** डेमो एक ***" प्रिंट डेमो 1 () प्रिंट "********* ******* "प्रिंट प्रिंट" *** डेमो दो *** "प्रिंट डेमो 2 () प्रिंट" **************** " 

जब आप यह स्क्रिप्ट चलाते हैं, तो यह प्रिंट होगा:

  *** डेमो एक *** 3 **************** * ** डेमो दो *** 6 3 ******************************************************************** डेमो एक के बजाय 3 की वापसी क्यों कर रहा है?   

"पाठ">

क्योंकि अंततः बयान गारंटीकृत को निष्पादित करने के लिए (अच्छी तरह से, कोई भी पावर आउटेज या पायथन नियंत्रण के बाहर कुछ नहीं मानना) इसका मतलब है कि फ़ंक्शन वापस आ सकता है, अंत में उसे ब्लॉक करना होगा, जो एक अलग मान देता है।

राज्य:

जब रिटर्न, ब्रेक या जारी बयान कोशिश के सूट में निष्पादित किया गया है ... आखिरकार बयान, अंत में खंड भी 'बाहर निकलने पर' निष्पादित किया जाता है। अंत में खंड में एक निरंतर कथन अवैध है। (कारण वर्तमान क्रियान्वयन में एक समस्या है - यह प्रतिबंध भविष्य में उठाया जा सकता है)।

इसका मतलब यह है कि जब आप लौटने की कोशिश करते हैं, तो अंततः ब्लॉक को कहा जाता है, इसे आपके मूल्य की बदले में वापस लाया जाता है।


No comments:

Post a Comment