web-dev-qa-db-ja.com

関数が終了する前にpythonで関数(終了値を持たない)を終了する最良の方法は何ですか(チェックが失敗するなど)。

戻り値なしで関数を呼び出す反復を想定しましょう。私のプログラムの振る舞いは、この擬似コードで説明されています

for element in some_list:
    foo(element)

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return None
    do much much more...

これをpythonで実装すると、関数がNoneを返すのが気になります。 「関数の本体でチェックが失敗した場合、戻り値を持たない関数を終了する」ためのより良い方法はありますか?

116
Aufwind

単純に使用できます

return

これはまったく同じです

return None

また、実行は、Noneステートメントをヒットせずに関数本体の最後に到達した場合、returnを返します。何も返さないことは、PythonでNoneを返すことと同じです。

216
Sven Marnach

私はお勧めします:

def foo(element):
    do something
    if not check: return
    do more (because check was succesful)
    do much much more...
15
Hyperboreus

パラメーターを指定せずにreturnステートメントを使用して、関数を終了できます。

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return
    do much much more...

または、問題を通知する場合は例外を発生させます

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        raise Exception("cause of the problem")
    do much much more...
10
Cédric Julien