将 args 和 kwargs 规范化为参数规范形式

2024-04-13

我正在寻找一种方法,给定函数的签名,将其 args 和 kwargs 规范化。也就是说,函数签名中传入的任何 kwargs 都应转换为 args。

例如:

def myfunc(a, b=0, c=0, **kwargs):
    pass

def canonicalize(func, *args, **kwargs):
    something = inspect.signature(func)
    # Do something with args/kwargs here
    return new_args, new_kwargs

输出示例:

>>> canonicalize(myfunc, 1, 2, g=3)
(1, 2), {'g': 3}
>>> canonicalize(myfunc, 1)
(1,), {}
>>> canonicalize(myfunc, 1, b=2)
(1, 2), {}
>>> canonicalize(myfunc, 1, g=3, b=2)
(1, 2), {'g': 3}
>>> canonicalize(myfunc, 1, g=3, c=2)
(1, 0, 2), {'g': 3}

您可以使用inspect.signature https://docs.python.org/3/library/inspect.html#inspect.signature和它的bind(...)方法,例如:

bound_args = inspect.signature(myfunc).bind(1, g=3, c=2)
# <BoundArguments (a=1, c=2, kwargs={'g': 3})>

然后从以下位置访问您需要的内容BoundArguments https://docs.python.org/3/library/inspect.html#inspect.BoundArguments对象,例如:

bound_args.apply_defaults()
args = bound_args.args
kwargs = bound_args.kwargs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 args 和 kwargs 规范化为参数规范形式 的相关文章

  • 从 Django 调用 Postgres SQL 存储过程

    我正在开发一个带有 Postgresql 数据库的 Django 项目 我编写了一个可以在 Postgres 上完美运行的存储过程 现在我想从 Django 1 5 调用该存储过程 我已经编写了代码 但它提示错误 CREATE FUNCTI
  • 嵌套字典中的 Django 模板

    我正在使用 Django 模板 并且遇到了嵌套字典的一个问题 Dict result dict type 0 file name abc count 0 type 1 file name xyz count 50 我的 HTML 文件中的模
  • 将 transaction.commit_manually() 升级到 Django > 1.6

    我继承了为 Django 1 4 编写的应用程序的一些代码 我们需要更新代码库以使用 Django 1 7 并最终更新到 1 8 作为下一个长期支持版本 在一些地方它使用旧风格 transaction commit manually and
  • 如何使用 colorchecker 在 opencv 中进行颜色校准?

    我有数码相机获取的色彩检查器图像 我如何使用它来使用 opencv 校准图像 按照以下颜色检查器图像操作 您是想问如何进行颜色校准或如何使用 OpenCV 进行校准 为了进行颜色校准 您可以使用校准板的最后一行 灰色调 以下是您应该逐步进行
  • 在Python中如何获取字典的部分视图?

    是否有可能获得部分视图dict在Python中类似于pandasdf tail df head 说你有很长一段时间dict 而您只想检查某些元素 开头 结尾等 dict 就像是 dict head 3 To see the first 3
  • Python 是解释型的还是编译型的,或者两者兼而有之?

    据我了解 An 解释的语言是由解释器 将高级语言转换为机器代码然后执行的程序 实时运行和执行的高级语言 它一次处理一点程序 A compiled语言是一种高级语言 其代码首先由编译器 将高级语言转换为机器代码的程序 转换为机器代码 然后由执
  • Python中列表中两个连续元素的平均值

    我有一个偶数个浮点数的列表 2 34 3 45 4 56 1 23 2 34 7 89 我的任务是计算 1 和 2 个元素 3 和 4 5 和 6 等元素的平均值 在 Python 中执行此操作的快捷方法是什么 data 2 34 3 45
  • 更改 x 轴比例

    我使用 Matlab 创建了这个图 使用 matplotlib x 轴绘制大数字 例如 100000 200000 300000 我想要 1 2 3 和 10 5 之类的值来指示它实际上是 100000 200000 300000 有没有一
  • 设置 verify_certs=False 但 elasticsearch.Elasticsearch 因证书验证失败而引发 SSL 错误

    self host KibanaProxy 自我端口 443 self user 测试 self password 测试 我需要禁止证书验证 使用选项时它与curl一起使用 k在命令行上 但是 在使用 Elasticsearch pytho
  • 如何使用 Bokeh 动态隐藏字形和图例项

    我正在尝试在散景中实现复选框 其中每个复选框应显示 隐藏与其关联的行 我知道可以通过图例来实现这一点 但我希望这种效果同时在两个图中发生 此外 图例也应该更新 在下面的示例中 出现了复选框 但不执行任何操作 我显然不明白如何更新用作源的数据
  • Python Pandas:如何对组中的所有项目进行分组并为其分配 id?

    我有 df domain orgid csyunshu com 108299 dshu com 108299 bbbdshu com 108299 cwakwakmrg com 121303 ckonkatsunet com 121303
  • Python:我不明白 sum() 的完整用法

    当然 我明白你使用 sum 与几个数字 然后它总结所有 但我正在查看它的文档 我发现了这一点 sum iterable start 第二个参数 start 的作用是什么 这太尴尬了 但我似乎无法通过谷歌找到任何示例 并且对于尝试学习该语言的
  • 使用 Conda 更新特定模块会删除大量软件包

    我最近开始使用 Anaconda Python 发行版 因为它提供了许多开箱即用的数据分析库 使用 conda 创建环境和安装软件包也轻而易举 但是当我想更新 Python 本身或任何其他模块时 我遇到了一些严重的问题 我事先被告知我的很多
  • Werkzeug 中的线程和本地代理。用法

    首先 我想确保我正确理解了功能的分配 分配本地代理功能以通过线程内的模块 包 共享变量 对象 我对吗 其次 用法对我来说仍然不清楚 也许是因为我误解了作业 我用烧瓶 如果我有两个 或更多 模块 A B 我想将对象C从模块A导入到模块B 但我
  • 使用 pybtex 将 bibtex 转换为格式化的 HTML 参考书目,例如哈佛风格

    我正在使用 Django 并将 bibtex 存储在我的模型中 并且希望能够以格式化 HTML 字符串的形式向我的视图传递引用 使其看起来像哈佛引用样式 使用中描述的方法Pybtex 无法识别 bibtex 条目 https stackov
  • 字符串列表,获取n个元素的公共子串,Python

    我的问题可能类似于this https stackoverflow com questions 37514193 count the number of occurrences of n length not given string in
  • OSX 上的 locale.getlocale() 问题

    我需要获取系统区域设置来执行许多操作 最终我想使用 gettext 翻译我的应用程序 我打算在 Linux 和 OSX 上分发它 但我在 OSX Snow Leopard 上遇到了问题 python Python 2 5 2 r252 60
  • 从列表python的单个列表中删除子列表

    我已经经历过从列表列表中删除子列表 https stackoverflow com questions 47209786 removing sublists from a list of lists 但当我为我的数据集扩展它时 它不适用于我
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • bs4 `next_sibling` VS `find_next_sibling`

    我在使用时遇到困难next sibling 并且类似地与next element 如果用作属性 我不会得到任何返回 但如果用作find next sibling or find next 然后就可以了 来自doc https www cru

随机推荐

  • 如何在会话中存储石英作业的结果?

    我已经在 Grails 2 1 应用程序中安装了 Quartz 插件 每 5 分钟就会触发一个作业来计算一些数字 这些数字显示在每个页面的侧栏上 计算结果会经常变化 我的目标是当用户刷新屏幕时 他们可以在侧边栏上看到新结果 现在我的方法是将
  • php 中的 git post-receive 挂钩

    我希望能够在 post receive 挂钩上执行 php 挂钩 将文件从 git 存储库复制到同一服务器上的 web 文件夹 并且只有在主分支上推送文件时才运行 忽略其他分支 以下是我到目前为止所得到的 usr bin php 基本上 我
  • 如何从生成的sql返回本地临时表

    我有过滤 SQL 它返回列数不确定的查询 并希望在存储过程中使用结果 DECLARE RecordSelectionSql VARCHAR MAX SET RecordSelectionSql SELECT SQLQUERY FROM Re
  • 创建 tar 文件并按当前日期命名

    我正在尝试在 bash 中创建一个备份脚本 以 tar 压缩文件夹的内容并将生成的文件移动到某处 但我真的不知道该怎么做 bin bash name date y m d tar zcvf name code 但结果是文件只是命名为 y m
  • 如何在 Kotlin 中将 Fuel 与协程一起使用?

    我想获取 API 请求并将请求的数据保存到数据库 还想返回数据 即写入数据库 我知道 这在 RxJava 中是可能的 但现在我用 Kotlin 协程编写 目前使用 Fuel 而不是 Retrofit 但差异不是那么大 我读如何将 Fuel
  • 使用 Windows 服务总线 (1.1) 配置向导配置时出错

    我正在尝试使用服务总线配置向导配置 Windows 服务总线 1 1 当我尝试配置它时 出现以下错误 谁能告诉我出了什么问题 错误 5 9 2014 9 32 40 AM System Management Automation Cmdle
  • 使用 Mac Excel VBA 另存为 pdf

    我在 Mac OS 上使用 Excel VBA 保存为 PDF 有时不起作用 它会给 打印时出错 then 运行时错误 1004 应用程序定义或对象定义的错误 我的代码 昨天有效 a For Windows Dim wksSheet As
  • 在 Go 中将 https://www.example.com 重定向到 https://example.com

    现在我正在将 http 的所有内容重定向到 https 如下所示 func main router httprouter New router POST api register toHandle register router GET a
  • 使用 C# 和 ASP.Net 设置 type="password" 的输入标记的值

    所以我有这个输入标签
  • onclick 或内联脚本在扩展中不起作用

    这似乎是最简单的事情 但它就是行不通 在普通浏览器中 html 和 js 文件可以完美运行 但在 Chrome Firefox 扩展中onClick函数没有执行它应该做的事情 js 文件 function hellYeah text doc
  • OData 中的过滤器和集合

    这与 Azure 最近推出的搜索服务有关 该服务目前处于预览状态 我试图弄清楚如何将 OData 的过滤器与集合一起使用 我知道我可以这样做 filter Products any p p eq WidgetA 它将按 WidgetA 过滤
  • Python-如何获取文本文件中的行数[重复]

    这个问题在这里已经有答案了 我想知道是否可以在不使用命令的情况下知道有多少行包含我的文件文本 with open test txt as f text f readlines size len text 我的文件非常大 所以很难使用这种方法
  • 使用 C# 添加附件到电子邮件

    我正在使用此答案中的以下代码通过 Gmail 在 NET 中发送电子邮件 https stackoverflow com questions 32260 sending email in net through gmail 我遇到的问题是在
  • 调整文本区域大小以适合所有内容[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • Google Play 中的生产版和测试版

    我已在 Google Play 中以生产模式发布了一个应用程序 现在 我有一个新版本 我想以 Beta 模式为有限数量的私人 Beta 用户发布 有可能两者兼得吗 即生产模式下的版本 1 0 和测试模式下的版本 1 1 或者我应该维护一个不
  • Node.js 中 For 循环中的 async.waterfall

    使用时async waterfall https github com caolan async在一个for循环 看来for循环在嵌套之前迭代async waterfall完成所有步骤 如何避免这种情况 for var i 0 i lt u
  • NSString sizeWithAttributes:内容矩形

    如何获得 NSString 的大小 就好像它在 NSRect 中绘制一样 问题是当我尝试 NSString sizeWithAttributes 时 它返回一个 NSSize 就好像它具有无限宽度一样 我想给该方法一个最大宽度 有什么办法可
  • 检测机器人帐户是否离线/在线

    我正在使用presenceUpdate然而 它触发了两次 我被告知它正在发出我与机器人拥有的共享服务器的数量 目前我的代码输出online两次 我不确定如何让它只输出一次 if newPresence userID botid if new
  • 处理外部函数导入

    这可能是一个关于如何处理外部函数的导入和导出函数的相当普遍的问题 所以我有一个component像这样 import React Component from react import handleChange from path impo
  • 将 args 和 kwargs 规范化为参数规范形式

    我正在寻找一种方法 给定函数的签名 将其 args 和 kwargs 规范化 也就是说 函数签名中传入的任何 kwargs 都应转换为 args 例如 def myfunc a b 0 c 0 kwargs pass def canonic