2011-10-20 78 views
21

當(在使用Mac OS X 10.7在Mac在Python 2.7.1)Python的return語句錯誤 「外部函數 '迴歸'」

while True: 
    return False 

我收到以下錯誤

SyntaxError: 'return' outside function 
運行下面的代碼

我仔細檢查了錯誤的選項卡和/或空格。當我使用推薦的4個縮進空格時,我可以確認代碼失敗,出現上述錯誤。當返回放置在其他控制語句(例如if,for等)內時,也會發生此行爲。

任何幫助,將不勝感激。謝謝!

+14

口譯員說什麼,你不在一個函數內。控制語句不是函數,你用'def'定義一個函數。 –

+2

你可能在尋找'break'。 –

+0

我使用'yield',它給了我同樣的錯誤,原因是一樣的,應該是一個函數.. – 8090PZ

回答

40

聲明纔有意義,在函數內部:

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

Raymond,你是否得到了如此多的rep點以至於你的計數器回滾到0? – PaulMcG

+0

@PaulMcGuire:你的評論混淆了我。 –

+0

@PaulMcGuire他的賬戶只存在了三天。 – agf

11

爲了打破循環,使用break代替return

或將循環或控制構建成一個函數,只有函數可以返回值。

+0

完全正確,非常感謝你@Jurgen – Jeff

12

使用quit()在這方面。 break預計在一個循環內,並且return預計在一個函數內。

+0

這工作的情況下,你只是想停止腳本,因爲你要做一個做無效返回。我寧願使用sys.exit(),因爲然後可以指定退出狀態。檢查這個問題:http://stackoverflow.com/questions/543309/programatically-stop-execution-of-python-script – gcucurull

1

根據return聲明的文檔,return只能在語法上嵌套在函數定義中。 yield也是如此。