6

Pythonでどちらの方法がより好ましいかを知りたいだけです。次の 2 つの関数を想像してください。

1 機能:

def foo(key):
    if bar.has_key(key):
        return bar.get(key)
    # do something with bar
    # this will be executed if bar_key(key) is False
    ...
    return something

2 機能:

def foo(key):
    if bar.has_key(key):
        return bar.get(key)
    else:
        # do something with bar
        # this will be executed if bar_key(key) is False
        ...
        return something

ご覧のとおり、唯一の違いはelseステートメントです。問題は、何らかの形でパフォーマンスに影響を与えるかどうかです。elseまたは、このタイプの関数に含める理由はありますか?

4

3 に答える 3

7

この 2 つのアプローチのどちらかを選択する場合、私は最初のアプローチを選択します。 returnその時点で実行が終了することは明らかです。if x { return y } else { ... }この理由でアンチパターンを見つけました (Python だけでなく、これは C/C++ コードでも見られ、そこでもイライラします)。

戻る場合、elseブロックはまったく不要であり、非常に大きなコード ブロックの無意味なインデントを引き起こします。ネストされた構造が多いほど、コードを読んでいるときに頭の中で適切なコンテキストを維持することが難しくなります。このため、ロジックを難読化しない場合はネストを減らす傾向があり、この場合はそうではないと思います。

于 2013-08-29T17:15:45.457 に答える
4

pythonic の方法:

def foo(key):
    return bar.get(key, something)
于 2013-08-29T17:12:47.743 に答える
4

この質問は少し意見に基づいていますが、「明示的は暗黙的よりも優れている」という理由で、2番目はよりPythonicだと思います。2 番目の関数は、「この条件の場合はこれを実行し、そうでない場合はこれを実行する」と明確に言っています。一方、最初の関数は「Otherwise」部分を意味します。

于 2013-08-29T17:13:51.627 に答える