解包参数:只有命名参数可以跟在*表达式后面

2024-02-09

以下代码在 Python 中运行得非常好:

def f(x,y,z): return [x,y,z]

a=[1,2]

f(3,*a)

的要素a像你这样称呼它一样打开包装f(3,1,2)它返回[3,1,2]。精彩的!

但我无法解开其中的元素a进入first两个论点:

f(*a,3)

而不是这样称呼f(1,2,3),我得到“语法错误:只有命名参数可以跟随*表达式”。

我只是想知道为什么它必须是这样,以及是否有任何我可能不知道的聪明技巧可以将数组解包到参数列表的任意部分而不诉诸临时变量。


As Raymond Hettinger's answer points out, this may change has changed in Python 3 and here is a related proposal http://www.python.org/dev/peps/pep-3132/, which has been accepted. Especially related to the current question, here's one of the possible changes to that proposal that was discussed:

只允许带星号的表达式作为表达式列表中的最后一项。这将简化 稍微解压代码并允许为带星号的表达式分配一个迭代器。这 行为被拒绝,因为这太令人惊讶了。

因此,对解包函数参数的限制是有实现原因的,但这确实有点令人惊讶!

与此同时,这是我一直在寻找的解决方法,回想起来很明显:

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

解包参数:只有命名参数可以跟在*表达式后面 的相关文章

随机推荐

  • Python-social-auth使用Django服务器主机名和监听端口作为redirect_uri

    我正在将 python social auth 与 Django 一起使用 以使用 Oauth2 google oauth2 向 Google 进行身份验证 在我的模板中我使用了一些东西like https github com omab
  • 如何在 Node.JS Google Cloud 函数中获取访问令牌?

    我在 Google Cloud 上的 Node JS 中有一个云函数 我需要向 Google 发出 GET 请求 并且它需要一个身份验证令牌 使用curl你可以使用生成一个 gcloud auth application default p
  • 用累积值表示设置时间

    调度问题有很多系列 我正在研究一个问题 我有一系列的工作 任务 需要从一个家庭过渡到另一个家庭 需要重新配置机器 设置时间 我在用着cumulatives 2 3 解决这个问题 但我不确定设置时间如何 可以表达 在这个小例子中 我有 10
  • 删除主键(聚集索引)以提高插入性能

    我们一直在经历 SQL 超时 并已确定该瓶颈是审核表 我们系统中的所有表都包含插入 更新和删除触发器 这些触发器会导致新的审核记录 这意味着审计表是系统中最大且最繁忙的表 然而数据只进入 永远不会出来 在这个系统下 所以没有select需要
  • Eclipse 索引 - 各种选项的作用是什么

    当你right click gt index在一个项目上有几个选项 Rebuild 刷新所有文件 使用修改的文件进行更新 重新解决未解决的包含 我每次都只是点击重建 但现在我正在做一个巨大的项目 但负担不起这样做 当我修改文件时 无论是 c
  • Android 波纹按钮与背景

    我使用 XML 在 android 5 0 中成功创建了一个波纹按钮 我的代码如下
  • 使用 LINQ 将多个列表合并为一个列表

    是否有一种灵活的方法可以使用 LINQ 将多个列表合并为单个列表 以有效地复制此内容 public class RGB public int Red get set public int Green get set public int B
  • 使用 Alpha 将 8 位 PNG 转换为 32 位

    我有一张图片 PNG image data 403 x 343 8 bit colormap non interlaced 我想将其转换为 Google Play 图标大小 32 bit with alpha 我该怎么做 使用修复它http
  • Server.Transfer 和 Response.Redirect 哪一个更好

    哪一个更好 Server Transfer or Response Redirect 我正在寻找一些解释 它们有不同的功能 更好的定义取决于您想要做什么 Response Redirect 告诉客户端访问一个新地址 该地址可以是任何地方 S
  • 在 Java Servlet 上下文中,URL 重写和转发之间有什么区别?

    作为 Java Web 应用程序的开发人员 我什么时候需要使用 URL 重写 URL 重写和转发之间有什么区别 我在其他网站上进行了搜索 我得到了矛盾的信息 具体取决于您与谁交谈 例如 SEO 人员会以不同的方式回答这个问题 AFAIK 在
  • 通过actionscript 3在Flash中设置舞台消失点

    我正在与几位设计师合作 他们每个人都创建了在同一个 Flash 应用程序中使用的 3D 动画 使用 fp 10 功能 每个 3D 动画都是一个独特的影片剪辑 最终将成为同一 fla 文件的一部分 我遇到的问题是每个影片剪辑都是在单独的 fl
  • react-native fetch返回状态码+json

    我在react native中使用fetch来进行API调用 我需要获取状态代码 200 401 404 和响应数据 这项工作是为了获取响应数据 return fetch url then response gt return respon
  • 为什么命令完成后我的 stderr 重定向没有结束?我该如何解决它?

    在 Windows 中 无论是在命令行还是批处理文件中 命令DIR 2 gt NUL 3 gt 2 你可以替换DIR任何东西 即使不是文件或命令 都会使所有错误从那时起丢失 除非你写2 gt CON 每次命令之后 为什么 CMD 还要这样做
  • 如何告诉 R 解释器如何使用代理服务器?

    我试图让 R 在 Windows 上运行 从 Internet 下载一些软件包 但下载失败 因为我无法让它正确使用必要的代理服务器 当我尝试 Windows 菜单选项时的输出文本Packages gt 安装软件包 选择一个CRAN镜像是 g
  • 如何将 Ninject 集成到 ASP.NET Core 2.0 Web 应用程序中?

    我发现 Ninject 最近引入了对 NET Standard 2 0 NET Core 2 0 的支持 https www nuget org packages Ninject 3 3 0 但是 我找不到任何扩展来将其实际集成到 Web
  • Docker:容器在专用网络上找不到域

    我试图解决在不同主机上运行相同的 docker 容器的问题 其中一个容器可以在专用网络上找到 ping nslookup 域 而另一个容器则不能 一台主机是 OSX 10 11 另一台是 Ubuntu 16 04 两者都运行 docker
  • .htaccess 单页301重定向

    网站重新设计后 我有几个页面需要重定向 所有内容都保留在同一个域中 只有一些内容被重新组织和 或重命名 它们的形式如下 contact php is now 联系我们 php 使用 htaccess 文件 我添加了这一行 这是我最推荐的一行
  • 使用 HTML5 和 AngularJS 拖动表格列

    http jsfiddle net asutosh 82qum http jsfiddle net asutosh 82qum div div table border 4 thead th div hd div th thead tr t
  • JQuery 附加 javascript

    我尝试创建模块化应用程序 因此每个页面都包含自己的 html 和 javascript 代码 我应该动态加载所有代码 如下所示 var s document createElement script s type text javascri
  • 解包参数:只有命名参数可以跟在*表达式后面

    以下代码在 Python 中运行得非常好 def f x y z return x y z a 1 2 f 3 a 的要素a像你这样称呼它一样打开包装f 3 1 2 它返回 3 1 2 精彩的 但我无法解开其中的元素a进入first两个论点