首页 > 解决方案 > Python - 将 **kwargs 传播到类似于 ES6 传播的字典中

问题描述

除了预期和必需的参数之外,我有一个函数可以接收意外数量的附加参数。我想将附加参数与预期参数一起传递到字典中。Python 中是否有类似于 JavaScript 的 ES6 扩展运算符的“扩展”运算符或类似方法?

JS中的版本

function track({ action, category, ...args }) {
  analytics.track(action, {
    category,
    ...args
  })
}

Python中的版本

def track(action, category, **kwargs):
    analytics.track(action, {
        'category': category,
        ...**kwargs # ???
    })

标签: pythonpython-3.x

解决方案


您只是在寻找**运营商。通常,{**a, **b}, whereabare ,使用来自和的组合键值对dicts创建 a ,在键重叠的情况下优先。一个例子:dictabb

def f(category, **kwargs):
    return {'category': category, **kwargs}

print(f('this_category', this='this', that='that'))

输出:

{'category': 'this_category', 'this': 'this', 'that': 'that'}

因此,在您的情况下,您可能想要这样的东西:

analytics.track(action, {'category': category, **kwargs})

推荐阅读