python - 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 # ???
})
解决方案
您只是在寻找**
运营商。通常,{**a, **b}
, wherea
和b
are ,使用来自和的组合键值对dicts
创建 a ,在键重叠的情况下优先。一个例子:dict
a
b
b
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})
推荐阅读
- wso2 - 在 API manager 中创建的租户无法登录 ID 服务器的 carbon 控制台
- javascript - Chrome 有时不显示 SVG 图像
- sql-server-2019 - xevent 跟踪在 SQL Server 2019 中不返回任何内容
- latex - 在 orgmode 的 Latex 导出中使用 \addbibresource 时表标签引用中断
- javascript - 当数组数据从祖父组件更改时,vuejs如何从孙子组件检测函数中的数据更改
- c++ - qt如何渲染mainwidget
- javascript - 将 JSX 元素渲染为多级金字塔
- iphone - Xcode 无线调试 iPhone 在公园的热点 [已解决]
- javascript - 如何在html表单中排除少数输入
- c# - SignalR:空集线器脚本文件