私は、Pythonインタプリタにと伝える良い方法があるかどうか疑問に思ったが、関数の次の/最後のreturn文にスキップする。Python:条件が返ってきたら返す
次ダミーのコードを想定します:
def foo(bar):
do(stuff)
if condition:
do(stuff)
if condition2:
do(stuff)
if condition3:
...
return (...)
時には、これは彼らがブロックの上do(stuff)
に依存しているので、私はチェーンを傾ける多くの条件と本当に厄介取得します。私は今、これを行うことができます:
def foo(bar):
do(stuff)
if not condition: return (...)
do(stuff)
if not condition2: return (...)
do(stuff)
if not condition3: return (...)
...
return (...)
それは少し厄介に見えますが、私はsomwhat anoyingであり、その長いタプルまたは類似の場合、それはさらに悪い見えたもう一度もう一度return文を繰り返してしなければなりません。 完璧な解決策は、「条件がない場合は、最終的なreturn文にスキップする」と言うことです。これは何とか可能ですか?
編集:これを明確にする:パフォーマンスの低下
_「多少厄介で、その長いタプルなら_」。 'x = [ここに長いタプルを挿入する]'だけできませんか?それから、あなたはたくさんの場所でそれを返すことができ、毎回 'return x 'を書くだけでよいのです。 – Kevin
一般的に、ネストされたステートメントのためにコードが右に移動することが判明した場合、ロジック全体を再構築する方法は常にあります。どのように正確にあなたがやっている具体的なものと、それらの行動や条件を簡素化することができますに依存します。本当の一般的な答えはありません。 – deceze
* try else * ** finally **構文を使用してから、通常の*を返すのはどうですか?最終的にはリソースを閉じることを目的としていますが、*最終的な返品明細書*によってあなたの意味ごとに家事を行うことができます。あなたが何か異なるものを返すことができるかどうかは確かではありませんが、なぜそうは見えません。あなたのセットアップにコードの臭いがあることに同意しないでください。しかし、私たちはあなたのロジックについて知らず、あなたの質問を自分自身で有効なものにしています。 –