これは私の最初の質問なので、私が犯すと確信している投稿ミスについて心からお詫び申し上げます。最初に以前に回答された質問を検索しましたが、正しい用語やキーワードを使用して検索しなかった可能性があることは認識していますが、適切な解決策が見つかりませんでした。
Python ですばやく評価したい一般的な関数があります。これはオプティマイザー (fmin_cobyla) に渡されますが、引数を 1 つだけ取りたいと思います。フラグによって制御される可能性のあるこの関数のさまざまなバリエーション (バリアント? フレーバー?) を使用するオプションを使用できるようにしたいと考えています。すぐに評価したいので、関数内に多数の if または case ステートメントを含めるのは意味がありません (そうですか?)。そのため、現在、関数バリアントの定義の周りに if ステートメントがあります。
if flag==1:
def f(x):
for i in range(0,len(x)*3,3):
A[i:i+3,i:i+3]=1/x[i/3]*np.eye(3)
tmp=np.linalg.solve(A,b)
y=somecmodulefunction(tmp)
return y
elif flag==2:
def f(x):
for i in range(0,len(x)*3,3):
A[i:i+3,i:i+3]=x[i/3]*np.eye(3)
tmp=np.linalg.solve(A,b)
y=somecmodulefunction(tmp)
return y
...
機能は、1 行を除いて同じです。これは正しい方法ですか?10個の異なるバリアントがある場合、それが長くて扱いにくいコードブロックにならないようにする方法はありますか?
ありがとう!