问题标签 [keyword-argument]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Python 中,是什么决定了遍历 kwargs 时的顺序?
在 python 中,我编写了这个函数来教自己如何**kwargs
在 Python 中工作:
然后我用
这是我的 Python 解释器打印的输出:
为什么 for 循环在 a2 之前打印 a3 的值,即使我先将 a2 输入到我的函数中?
python - argparse 参数顺序
我有一个小问题。
我argparse
用来解析我的论点,而且效果很好。
要获得参数,我会:
但问题p_args
是我不知道如何让这些参数按它们在命令行中的位置排序,因为它是一个字典。
那么有没有可能按照命令行中的顺序将参数放在元组/列表/有序字典中?
python - Python - 入站出站参数
我在 Expert Python Programming 中读到过这个极端案例。检查此代码:
我不清楚为什么f
最后一次调用时(在保存其返回值之后),而不是分配 arg 空字典(因为它是在没有参数的情况下调用的),而是保留旧的引用。
这本书是这样说的:“如果在参数中创建了一个对象,那么如果函数返回该对象,则参数引用仍然有效”。
我明白“这就是它的工作方式”,但为什么会这样呢?
python - 将字典发送到不接受 **kwargs 的函数?
我最近才开始了解 **kwargs 的神奇之处,但我遇到了一个绊脚石。有没有办法将字典的关键字发送到不接受关键字参数的函数?考虑以下简单设置:
我使用了一些外部代码,它们以以下样式进行接口:
问题是:“externalCode”不接受 **kwargs,那么有没有一种聪明的方法可以将字典信息变成可接受的形式?
此外,不同的函数将 parameterDict 的不同子集作为参数。因此,函数“two”可能接受“first”和“second”参数,它拒绝“third”。“三”接受所有三个。
- - - - - - - - - - - - - - - - - - - 编辑 - - - - - - -------------------------
人们已经正确地评论说上面的代码不会失败——所以我已经找到了我的问题,我不确定它是否值得重新发布。我正在做这样的事情:
而且,显然解决方法是在定义时明确包含 hairColor: printHair(hairColor, **kwargs) 首先。
python - 方法1可以将kwargs传递给方法2吗?
我希望 kwargs 在 method2 中具有与传入 method1 的内容相同的确切内容。在这种情况下,“foo”被传递到方法 1,但我想传递任意值并在方法 1 和方法 2 中的 kwargs 中查看它们。我需要对我如何调用 method2 做一些不同的事情吗?
输出:
期望的输出:
如果我需要澄清我在问什么,或者如果这是不可能的,请告诉我。
python - WTForms 错误:“object.__new__() 没有参数”,设置额外的 kwargs 时
根据我所见,我猜你应该将 kwargs 传递给 WTForms 小部件,它会将它们作为属性添加到标签中,对吧?像这样?
好吧,我在控制台中得到的内容如下:
经过几个小时的研究和恐惧,我不太确定如何解决这个错误。TextArea 小部件源代码如下:
rows
并且cols
应该在渲染时作为关键字参数传递。
似乎它应该很简单。
我在 App Engine 中使用 Python 2.7 以及 Flask,如果有帮助的话。截至撰写本文时,我正在使用最新版本的 WTForms 1.0.1。
提前致谢!
python - 使用 *args、**kwargs 和可选/默认参数调用 Python 函数
在 Python 中,我可以如下定义一个函数:
在这种情况下,我可以调用func
:
我还可以将函数定义为:
可以称为
最后,我可以结合这两种形式
但是,不起作用的是调用:
我最初的想法是,这可能是因为一个函数
可以称为
所以这会引入一些歧义,是否应该将 3 打包到args
orkwargs
中。但是,使用 Python 3,可以指定仅关键字参数:
有了这个,似乎没有语法歧义:
但是,这仍然会带来语法错误(使用 Python3.2 测试)。我失踪有什么原因吗?而且,有没有办法获得我上面描述的行为(使用默认参数)——我知道我可以通过操纵函数内部的字典*args
来模拟这种行为。kwargs
python - Python/Cherrypy 处理从 Kwargs 上传的文件。实例类型不可索引。尝试转储 FieldStorage 数据
我正在运行cherrypy和一个接收文件的模块,我想将数据转储到磁盘。我不想使用cherrypy暴露并从我的主cherrypy应用程序中获取文件,而是想自己处理它。我已经能够做到这一点
print kwargs['image']
并将其转储到控制台
FieldStorage('image', 'Diagram1.jpeg', *raw image data*)
如何访问那里的三个变量并在我的程序中使用它们?
如果我尝试索引它们,它会说,实例类型不可索引。
我能够摆脱这个print kwargs['image'].__dict__
但它似乎都没有,因为它说TypeError: not indexable
macros - 球拍宏可以接受关键字参数吗?
我想在 Racket 中创建一个可以接受关键字参数的语法形式,就像某些函数一样。
将其简化为一个简单的示例后,我尝试编写:
这样以下将起作用:
不幸的是,Racket 将此称为“错误语法”,因此显然这种尝试是不正确的。
这可以做到吗?
python - 为什么 ** 在函数调用中不解包 kwargs?
这是困扰我一段时间的事情:
我假设target='test'
在底部的 aFunc 调用中会以 kwargs 结尾(确实如此),并且我还假设 ** 会在函数调用中解包 kwargs,因此 target 将作为关键字参数存在于 aFunc 中。它没有。我知道它是以字典的形式出现的,但我需要在参数列表中解压该字典。这可能吗?简而言之,有没有办法让 *args 和 **kwargs 消失并让实际的 args 和 kwargs 进入通话?
编辑:我整理了一个案例,其中 *args 和 **kwargs 的解包可能会有所帮助:
假设我有一个打印列表的函数:
我希望能够不传递任何列表并提供默认列表:
现在我想用一个列表中继器变得更复杂一点:
这很好用。但现在我想要变量重复:
现在你可以说:
它将生成默认列表并重复 5 次。
当然,这会失败,因为 wrapper 无法处理 times 参数。我当然可以这样做:
但是我总是必须这样做:
也许在某些情况下我想强制提供一个值,所以非关键字 arg 是有意义的。
当我去年第一次遇到这样的问题时,我认为一个简单的解决方案是删除对包装器的要求:
但是,这行不通。这就是为什么我想让 args 和 kwargs 真正扩展,或者我想有办法进行扩展。然后,无论我提供什么 args 和 kwargs,它们实际上都会填写参数,而不是列表和字典。包装器中的文档将解释要求。如果传入inputList,它实际上会进入,并且从包装器回调repeatList 中的inputList 将是有效的。如果您没有传入 inputList,它会在对 repeatList 的回调中使用默认列表创建它。如果您的函数不在乎,但使用了 *kwargs,它会优雅地接受它而不会出现问题。
如果以上任何一个错误(超出一般概念),我们深表歉意。我在这里打出来的,未经测试,已经很晚了。