我有一个看起来像这样的功能:
def bootstrap(instrument, parallel_process=True, **kw):
prices = instrument.prices(**kw)
我希望能够传递关键字参数,因此内部位知道该怎么做。
我打算用以下内容打电话:
bootstrap(my_instrument, parallel_process=True, key1=True, key2=45)
我希望后面的部分能够了解价格。它将在我的代码中传递几个层。
我这样做了吗?似乎无法设置默认关键字args。
所以这个:
def prices(ccy_index=True, **kw):
print(ccy_index)
在ccy_index=False
传递**kw
后无法工作 - 它仍然认为ccy_index=True
这个策略很乱,我担心它很脆弱。我想要的是一组全局选项,代码的所有不同位可以提升其相关位,或者默认为函数中配置的内容。换句话说,就像关键字参数一样,但是递归定义。
答案 0 :(得分: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