2016-08-04 10 views
2

ご質問が少し不明な場合は申し訳ありませんが、私はどのようにフレーズするかわかりません。変数名でオプションのパラメータを渡すPythonic方法

私はいくつかのオプションパラメータを持つ関数を持つパッケージを扱っています。 x、y、zの3つのパラメータがあるとします。私はいつも同じ値を別のパラメータに渡します。だから私はこれを行うことができます:

if setting is x: 
    package.someFunction(x=1) 
elif setting is y: 
    package.someFunction(y=1) 
elif setting is z: 
    package.someFunction(z=1) 

それを行うにはもっとpythonicの方法はありますか?パラメータ名をそのように渡す変数に割り当てることはできますか?

答えて

5

キーとしてsetting、値として静的値を持つ辞書を作成します。このように、あなたはその厄介な切り替えを行う必要はありません。例えば

setting = 'x' 
kwargs = {setting: 1} 
package.someFunction(**kwargs) 

ただ、しかし、あなたがその設定を取得していることをsetting = 'x'行を変更します。値を適用したいと思っているのは、package.someFunctionの引数の名前と同じでなければなりません。

+0

設定は ''x''または' 'z''だけでしょうか?それは素晴らしいです、ありがとう! @Niel正確に。 – Niel

+0

。 'setting'は引数の名前を持つ文字列にします。 –

+2

引数にも変数は必要ありません。 'dict'リテラルを渡すことができます:' package.someFunction(** {setting:1}) '。 – chepner

関連する問題