python - 递归传递关键字

标签 python python-3.x recursion

我有一个看起来像这样的函数:

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/

相关文章:

javascript - 如何从 Javascript 执行 Python 脚本?

python - 打破长if语句的推荐方法是什么? (二元运算符后的 W504 换行符)

c++ - 如何编写可变参数模板递归函数?

javascript - Python爬虫使用Selenium和PhantomJS获取DOM信息

javascript - 为什么js中的递归函数不继承主函数的变量值?

python - 如何找到二叉树中特定节点的深度?

python - 使用 QWebView 请求的 POST 请求

python - 如何在 numpy 中始终对 XX.5 进行舍入

python - 什么时候 'commands' 比 'popen' 子进程更可取?

python - 模块未找到错误 : No module named 'machine'