2011-10-20 19 views
21

(पर साथ Mac OS X 10.7 एक मैक अजगर 2.7.1 में)अजगर वापसी कथन त्रुटि "समारोह के बाहर 'वापसी'"

while True: 
    return False 

मैं निम्न त्रुटि

SyntaxError: 'return' outside function 
निम्न कोड चलाते समय

मैंने गलती टैब और/या रिक्त स्थान के लिए ध्यान से जांच की है। मैं पुष्टि कर सकता हूं कि कोड उपरोक्त त्रुटि के साथ विफल रहता है जब मैं इंडेंटेशन की अनुशंसित 4 रिक्त स्थान का उपयोग करता हूं। यह व्यवहार तब भी होता है जब रिटर्न अन्य नियंत्रण विवरणों के अंदर रखा जाता है (उदाहरण के लिए, यदि, आदि)।

किसी भी मदद की सराहना की जाएगी। धन्यवाद!

+14

दुभाषिया क्या कहता है, आप किसी फ़ंक्शन के अंदर नहीं हैं। नियंत्रण कथन कार्य नहीं हैं, आप 'def' के साथ एक फ़ंक्शन को परिभाषित करते हैं। –

+2

आप शायद 'ब्रेक' की तलाश में हैं। –

+0

मैं 'उपज' का उपयोग करता हूं जो मुझे एक ही त्रुटि देता है, कारण एक ही है, एक समारोह में होगा .. – 8090PZ

उत्तर

40

वापसी बयान केवल कार्यों के अंदर समझ में आता है:

def foo(): 
    while True: 
     return False 
+1

रेमंड, क्या आपको इतने सारे प्रतिनिधि अंक मिल गए हैं कि आपका काउंटर 0 से ऊपर हो गया है? – PaulMcG

+0

@PaulMcGuire: आपकी टिप्पणी मुझे भ्रमित करती है। –

+0

@PaulMcGuire उसका खाता केवल तीन दिनों के लिए अस्तित्व में है। – agf

11

एक पाश तोड़ने के लिए, return के बजाय break का उपयोग करें।

या लूप या नियंत्रण को फ़ंक्शन में डालें, केवल फ़ंक्शन मान वापस कर सकते हैं।

+0

पर नींद खो रहा हूं, बहुत धन्यवाद, @Jurgen – Jeff

12

इस संदर्भ में quit() का उपयोग करें। break एक लूप के अंदर होने की अपेक्षा करता है, और return किसी फ़ंक्शन के अंदर होने की अपेक्षा करता है।

+0

यह आपको काम करता है अगर आप स्क्रिप्ट को रोकना चाहते हैं, जैसा कि आप करेंगे शून्य वापसी। मैं बजाय sys.exit() का उपयोग करता हूं, क्योंकि तब बाहर निकलने की स्थिति निर्दिष्ट की जा सकती है। इस प्रश्न को जांचें: http://stackoverflow.com/questions/543309/programatically-stop-execution-of-python- स्क्रिप्ट – gcucurull

1

return कथन पर प्रलेखन के अनुसार, return केवल फ़ंक्शन परिभाषा में वाक्यबद्ध रूप से घोंसला हो सकता है। yield के लिए भी यही सच है।

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