関数から忘れることreturn result
があります:
def f(*args):
# do stuff
result = # an expression
# oops forgot to return result
私のアプリケーションでは有効な値であるためNone
、呼び出し元で例外やアラームさえも発生しません。もちろん、気をつけようと思います。しかし、明示的に値を返さない関数について警告するためのきちんとしたアプローチがあるかどうか疑問に思っていました。
おそらく、そのようなケースを見つけるためにコードを実行できる正規表現です。または、何らかのコード チェック ツール (Windows 環境で使用できることを願っています)。
私はこのようなデコレータを使用することさえ考えていました:
def requires_return(func):
def new_func(*args, **kwargs):
result = func(*args, **kwargs)
if result is None:
print('Warning: {} may be missing a return statement'.format(func.__name__))
return result
しかし、これは次の理由で機能しません。
多くの誤報: 関数が実際に を返すたびに
None
。None
他の場所で本当に醜いコードを作成せずに、アプリケーションでの使用をやめることはできません。いずれにせよ、すべての関数にデコレータを追加するのは非常に見苦しく思えます。
return
意図的にステートメントを持たない関数があることに注意してください。私は特定の命名規則を維持する傾向があるため、それらを簡単に区別できます。(具体的には、で始まるすべての関数にget_
は return ステートメントが必要です。)