首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何返回在Python中带有双星/星号的kwargs?

如何返回在Python中带有双星/星号的kwargs?
EN

Stack Overflow用户
提问于 2019-08-25 15:23:08
回答 2查看 3.2K关注 0票数 1

假设我有以下功能:

代码语言:javascript
代码运行次数:0
运行
复制
def f(**kwargs):
    for key in kwargs.keys():
        print(key + ': ' + str(kwargs[key]))

def make_kwargs():
    # My example implementation here
    params = {'a' : 1, 'b' : 2}
    return params # Here is the part I don't know how to do

必须以下列方式调用这些函数:

代码语言:javascript
代码运行次数:0
运行
复制
f(make_kwargs())

然而,这将返回我的TypeError

TypeError: f()接受0个位置参数,但给出了1

我试过:

代码语言:javascript
代码运行次数:0
运行
复制
return **params

但是语法是无效的。

假设我不能修改函数f()及其调用方式(f(make_kwargs()))。我能修改的唯一部分是如何实现make_kwargs()。我想知道有什么办法吗?

EN

回答 2

Stack Overflow用户

发布于 2019-08-25 15:25:42

make_kwargs返回一个字典,所以您只是将一个字典传递给f。您希望将该字典解压缩为关键字参数,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
f(**make_kwargs())
票数 5
EN

Stack Overflow用户

发布于 2019-08-25 16:57:26

仍然可以打印这些值,但是在第二个调用中仍然会得到TypeError。

代码语言:javascript
代码运行次数:0
运行
复制
def f(**kwargs):
    for key in kwargs.keys():
        print(key + ': ' + str(kwargs[key]))


def make_kwargs():
    # My example implementation here
    params = {'a': 1, 'b': 2}
    return f(**params)


f(make_kwargs())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57647298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档