2011-10-20 4 views
21

Pythonのreturn文のエラー "機能外の 'リターン'"

while True: 
    return False 

I取得するには、次のエラー

SyntaxError: 'return' outside function 
する(Mac OS X 10.7とMac上のPython 2.7.1で)次のコードを実行しています

誤ったタブやスペースがないか慎重に確認しました。私はインデントの推奨4スペースを使用すると、上記のエラーでコードが失敗することを確認できます。この動作は、戻り値が他の制御ステートメントの内部に置かれている場合にも発生します(if、forなど)。

ご協力いただければ幸いです。ありがとう!

+14

インタープリタが言うとおり、あなたは関数の中にいません。制御文は関数ではなく、 'def'で関数を定義します。 –

+2

あなたはおそらく '休憩 'を探しています。 –

+0

私は 'yield 'を使って私に同じエラーを与えます、理由は同じです、関数でなければなりません.. – 8090PZ

答えて

40

リターン文は関数だけ内側に理にかなって:

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

Raymond、あなたはカウンターが0にロールバックしたたくさんのrepポイントを得ましたか? – PaulMcG

+0

@PaulMcGuire:あなたのコメントは私を混乱させる。 –

+0

@PaulMcGuire彼のアカウントは3日間しか存在しませんでした。 – agf

11

ループを解除するには、代わりにreturnbreakを使用しています。

ループまたはコントロールの構造体を関数に入れると、関数だけが値を返すことができます。

+0

非常に正直、ありがとうございました@Jurgen – Jeff

12

この場合、quit()を使用してください。 breakはループ内にあると予想し、returnは関数内にあると考えます。

+0

これは、単にスクリプトを停止したい場合は、 void return。私はむしろsys.exit()を使用したいと思います。なぜなら、終了ステータスを指定できるからです。この質問をチェックする:http://stackoverflow.com/questions/543309/programatically-stop-execution-of-python-script – gcucurull

1

returnステートメントのドキュメントによれば、returnは、関数定義に構文的にネストされている場合にのみ発生することがあります。 yieldについても同様です。

関連する問題