我有一个看起来像这样的函数:
def bootstrap(instrument, parallel_process=True, **kw):
prices = instrument.prices(**kw)
我希望能够传递关键字参数,以便内部位知道该做什么。
我将用类似的方式来调用它:
bootstrap(my_instrument, parallel_process=True, key1=True, key2=45)
我希望后面的部分可以通过价格。它将通过我的代码中的多个层。
我这样做对吗?似乎无法设置默认关键字参数。
所以这样:
def prices(ccy_index=True, **kw):
print(ccy_index)
在 **kw
中传递 ccy_index=False
时将不起作用 - 它仍然认为 ccy_index=True
这个策略一团糟,我担心它很脆弱。我想要的是一组全局选项,代码的所有不同位都可以从中提取它们的相关位,或者默认为函数中配置的内容。换句话说,类似于关键字参数,但递归定义。
最佳答案
我相信这可以满足您的要求:
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
关于python - 递归传递关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38198304/