Python 包参数?

发布于 2024-09-10 14:07:19 字数 455 浏览 7 评论 0原文

是否可以在 python 中“打包”参数?我在库中有以下函数,我无法更改(简化):

def g(a,b=2):
    print a,b

def f(arg):
    g(arg)

我可以这样做

o={'a':10,'b':20}
g(**o)
10 20

,但是我可以/如何通过 f 传递它?

这就是我不想要的:

f(**o)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() got an unexpected keyword argument 'a'

f(o)
{'a': 10, 'b': 20} 2

is to possible to "pack" arguments in python? I have the following functions in the library, that I can't change (simplified):

def g(a,b=2):
    print a,b

def f(arg):
    g(arg)

I can do

o={'a':10,'b':20}
g(**o)
10 20

but can I/how do I pass this through f?

That's what I don't want:

f(**o)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() got an unexpected keyword argument 'a'

f(o)
{'a': 10, 'b': 20} 2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伏妖词 2024-09-17 14:07:19

f 必须接受任意(位置和)关键字参数:

def f(*args, **kwargs):
    g(*args, **kwargs)

如果您不希望 f 接受位置参数,请省略 *args部分。

f has to accept arbitrary (positional and) keyword arguments:

def f(*args, **kwargs):
    g(*args, **kwargs)

If you don't want f to accept positional arguments, leave out the *args part.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文