在 python 函数中使用 *args、**kwargs 时“获得关键字参数的多个值”

2024-01-04

传递命名参数时request通过**kwargs,我收到一个错误 -

Traceback (most recent call last):
  File "testKwargs.py", line 9, in <module>
    load_strategy(request="myReq", backend="myBackend", redirect_uri=None, *args, **kwargs)
  File "testKwargs.py", line 5, in load_strategy
    get_strategy("backends", "strategy", "storage", *args, **kwargs)
TypeError: get_strategy() got multiple values for keyword argument 'request'

代码在testKwargs.py在下面-

def get_strategy(backends, strategy, storage, request=None, backend=None, *args, **kwargs):
    print request

def load_strategy(*args, **kwargs):
    get_strategy("backends", "strategy", "storage", *args, **kwargs)

args = ([],)
kwargs = {"acess_token":"myAccToken", "id":"myId"}
load_strategy(request="myReq", backend="myBackend", redirect_uri=None, *args, **kwargs)

我期望该键会有一个键值对request in the **kwargs of load_strategy被传递给request参数输入get_stragegy,但情况似乎并非如此。

我想弄清楚我在这里缺少什么。


你正在传递一个extra位置参数:

args = ([],)

该元组中有一个值,即列表对象。它在其他三个参数传递给之后应用get_strategy(), so to request。 Python 看到你调用:

get_strategy("backends", "strategy", "storage", [],
             request="myReq", backend="myBackend", redirect_uri=None, 
             acess_token="myAccToken", id="myId")

并且 4 个位置参数适用于backends, strategy, storage and request分别参数。

如果您打算传递 3 个位置参数,请指定args作为空元组:

args = ()

一切都很好:

>>> def get_strategy(backends, strategy, storage, request=None, backend=None, *args, **kwargs):
...     print request
... 
>>> def load_strategy(*args, **kwargs):
...     get_strategy("backends", "strategy", "storage", *args, **kwargs)
... 
>>> args = ()
>>> kwargs = {"acess_token":"myAccToken", "id":"myId"}
>>> load_strategy(request="myReq", backend="myBackend", redirect_uri=None, *args, **kwargs)
myReq
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 python 函数中使用 *args、**kwargs 时“获得关键字参数的多个值” 的相关文章

随机推荐

  • 如何消除 iPad 应用程序主窗口上的圆角?

    我见过一些 iPad 应用程序填满屏幕 例如 Stanza 或在状态栏下方形成方形角 例如 iPod 播放器顶部有方形角 底部看不出来 有人知道这是怎么做到的吗 默认情况下 顶层 UIWindow 似乎应用了一个剪切区域 因为我放置在该窗口
  • 显示网络浏览器设置

    使用不同的网络浏览器及其版本号字符串以及无数的配置列表确实很痛苦 我想知道是否有人想出了一个网页 可以将浏览器设置转储到浏览器 以便可以保存并转发给开发人员 Thanks 像这样的东西吗 http mybrowserinfo com det
  • 预期是二维数组,却得到一维数组,而是错误

    我得到的错误为 ValueError 需要 2D 数组 却得到 1D 数组 array 45000 50000 60000 80000 110000 150000 200000 300000 500000 1000000 如果数据具有单个特
  • 委托、Lambda 和 LINQ,天哪!

    作为一名相当初级的开发人员 我遇到了一个突出我经验不足和知识漏洞的问题 如果这里的序言太长 请原谅 我发现自己参与的一个项目需要学习许多 对我而言 新技术 其中包括 LINQ 用于该项目的 OBJECTS 和 XML 等 到目前为止我读到的
  • 如何获取使用“文本数字”的字体的升序或降序高度

    我对文本数字有疑问 参见维基百科 http en wikipedia org wiki Text figures 在使用以下命令创建的 PDF 文档中itextsharp 基线和数字最低点之间的距离 例如9 与字体的正常下降高度不同 使用下
  • 验证多态关联模型中的范围唯一性

    是的 所以我有一个多态关联 允许收藏不同的对象类型 所以一个人可以喜欢一个产品 一个人 或者其他什么 我想要做的是防止有人使用验证收藏夹模型中的唯一性来复制收藏夹 class Favorite lt ActiveRecord Base be
  • XMLHttpRequest 与 HttpRequest

    有谁知道 什么是XMLHttpRequest使网页能够执行普通网页无法完成的操作HttpRequest XMLHttpRequest http en wikipedia org wiki XMLHttpRequest是一个标准的 javas
  • 如何使用 Pandas 的时间戳按小时对数据帧进行分组

    我有以下使用时间戳索引的数据帧结构 neg neu norm pol pos date time 1520353341 0 000 1 000 0 0000 0 000000 0 000 1520353342 0 121 0 879 0 2
  • 使用 iText 在横向模式下绘制线条

    这是我用来画线的代码 double lineArray annotation getAsArray PdfName L asDoubleArray double x1 lineArray 0 rect getAsNumber 0 doubl
  • 对某一部分贪婪的正则表达式,对其他部分不贪婪的正则表达式

    我在 R 中使用正则表达式 但我希望它对左侧部分贪婪 对右侧部分非贪婪 假设我想提取单词 left 和 right 之间的文本 但我希望它是贪婪的 并继续在文本中查找单词 left 直到找到最后一次出现 但是 我也希望它不贪婪于 正确 并在
  • 将 SpatialPolygonsDataFrame 导出为 R 中的 geojson 或 topojson

    我正在尝试将伦敦地方当局的 geojson 转换为六角形图表 其中每个六边形代表一个地方当局 它在 R 中工作 但是当我尝试将生成的十六进制网格导出为 geojson 或 topojson 时 出现以下错误 Error in sp Spat
  • 实体框架 4.1 检索自引用数据

    我首先使用 Entity Framework 4 1 代码和 ASP NET MVC 3 并且我正在努力正确设置自引用 我有一个类别类 它必须是自我引用的 当表中ParentCategoryId为空时 类别可以是父类别 如果某个类别具有带值
  • 直接从 Outlook 拖放到 Web 表单

    我在网上搜索了一下 大部分答案都是无法完成 我的情况有点不同 因为我们正在开发的应用程序仅用于内部目的 并且可以允许浏览器中的任何安全级别 它也是基于内部网的 我还尝试查看是否有现成的 ActiveX 控件 但无法找到一个允许直接从 Out
  • Sympy - 改变绘图的 y 轴范围

    使用 Sympy 如何设置 y 轴的范围 plot x 2 2 我想让 y 轴从 0 到 7 当你绘图时 你可以使用 kwargsxlim and ylim设置轴限制 例如 gt gt gt plot x 2 2 xlim 3 3 ylim
  • 使用 Delphi 在运行时创建 TWebBrowser

    我有一个 TWebBrowser 对象 它在运行时创建并在后台使用 即不可见 问题是像 OnDocumentComplete 这样的事件在 Delphi2009 中不起作用或不会被触发 有什么建议吗 procedure TfrmMain F
  • 将文件写入通用应用程序数据文件夹被拒绝

    我使用以下函数将数据写入用户应用程序文件夹 private void WriteToLog string source string method string msg string LogFile Environment GetFolde
  • 对一系列门票进行排序[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 这是问题陈述 您有一叠包含出发地和目的地的车票 您将获得出发城市和目的地城市 你如何从堆栈中找到你的路线 这是我的解决方
  • 哪个更好的Javascript对象模式[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用“catch,when”捕获异常

    我在 C 中发现了这个新功能 它允许在满足特定条件时执行 catch 处理程序 int i 0 try throw new ArgumentNullException nameof i catch ArgumentNullException
  • 在 python 函数中使用 *args、**kwargs 时“获得关键字参数的多个值”

    传递命名参数时request通过 kwargs 我收到一个错误 Traceback most recent call last File testKwargs py line 9 in