私は関数を持っています。 if文の中に定義を囲むべきですか?ifを定義の中に入れるべきでしょうか?Pythonはブロック内で関数を定義するか、またはその逆の場合に関数を定義する
# Case 1
if mode == 1:
def f(x):
return x + 5
else:
def f(x):
return x - 5
# Case 2
def f(x):
if mode == 1:
return x + 5
else:
return x - 5
私は過去の両方を行っていると私の静的コード分析ツールは、文句を言うしていないようです。だから私はPythonの推奨があるかどうか疑問に思っていましたか?
EDIT:これまでのコメントから、両方のケースが受け入れられるようです。ユースケースによって異なります。モードが一定であることが意図されている場合、ケース1が好ましい。そうでなければ、ケース2
EDIT2:この質問は実際に私が関数を書いていたときに起こった。入力としてモードを取り込み、モードに応じて、それらの操作に関数内でのみ定義された別のサブ関数を使用する点を除き、同様の操作を実行します。関数の実行中にサブ関数が一定のままであるため、ケース1がより適切であるように見えます。
EDIT3:訂正:過去には、私は、これらの日、それはケース1と快適ではなかったことPyLintだと信じていた私はPyCharmを使用し、そのフラグにケース1
は、ケース1では、あなたが唯一の条件を一度確認してください。 – vaultah
2番目はより汎用性が高いようです。たとえば、ある時点でモードが変わるとどうなりますか?ケース2はここでも動作しますが、ケース1は動作しません。 – arshajii
この機能をどのように使いたいですか?あなたの2つの例は異なる動作をします。ケース1では、決定を一度行い、得られる関数は修正されます。ケース2では、関数を呼び出すたびに新しい意思決定を行います。 – BrenBarn