2016-07-05 5 views
2

私はこのようになります機能持っている:私はキーワード引数を通過できるようにしたいので、インナービットが何をすべきか知っている渡すキーワードを再帰的に

def bootstrap(instrument, parallel_process=True, **kw): 
    prices = instrument.prices(**kw) 

を。

私のようなもので、すべてを呼び出すするつもりです:私は後者の部品は価格に通過したい

bootstrap(my_instrument, parallel_process=True, key1=True, key2=45) 

。それは私のコードのいくつかの層を通過します。

私はこの権利を行っていますか?デフォルトのキーワード引数を設定することは不可能なようです。

ので、この:ccy_index=False**kwに渡されたとき

def prices(ccy_index=True, **kw): 
    print(ccy_index) 

は動作しません - それはまだこの戦略は混乱である、と私はそれが脆いです心配ccy_index=True

を考えています。私が望んだのは、コードのすべてのビットが関連するビットを持ち上げるか、または関数内で設定された何かにデフォルトするグローバルオプションのセットでした。言い換えれば、キーワード引数に似ていますが、再帰的に定義されます。

+0

を私はあなたの「動作しません」のシナリオを以下だとは思わない - あなたは適切なSSCCEを提供することができますか? –

答えて

1

私はこれが何をしたいんと信じています。このように

def prices(**kw_in): 
    kw = dict(ccy_index=True) # Defaults 
    kw.update(kw_in) 
    print(kw["ccy_index"]) 

、あなたは**kw経由の周りに再帰的に引数を渡すことができ、また、すべての段階でデフォルト値を割り当てました。上記のコードの使用

>>> prices() 
True 
>>> prices(ccy_index=True) 
True 
>>> prices(ccy_index=False) 
False 
+1

それは本当にエレガントです、私はそれが大好き!ありがとうございました! :) – cjm2671