如何将任意数量的参数传递给Python(Facepy库)中的函数?

2024-05-29 05:26:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将任意数量的参数传递给一个函数,但我不断地出错,而且不太确定哪里出错了。这是我第一次尝试使用**kwargs。在

更具体地说,我尝试使用Facepy库从Facebook的Graph API获取数据。{1{1}的可选参数,{1}似乎要接受这些参数,因为^**。在

首先,我创建了一个包装Facepy库的函数:

def graph_retriever(object_id, metric_url, **kwargs): 
    #optional args that I want to pass include since, until, and summary
    graph = facepy.GraphAPI(access_token)
    retries = 3 # An integer describing how many times the request may be retried.
    object_data = graph.get('%s/%s' % (object_id, metric_url), False, retries, **kwargs)
    return object_data

这里有两个例子,我用不同的参数调用函数:

^{pr2}$

post_dict['comment_count'] = graph_retriever(post_id, 'comments', {'summary':1})['summary']['total_count']

但是,当我尝试运行此程序时,会出现以下错误:

Traceback (most recent call last): raw_post_data = graph_retriever(str(page), 'posts', {'since': since, 'until': until}) TypeError: graph_retriever() takes exactly 2 arguments (3 given)

我做错什么了?在


Tags: 函数idurldata参数objectsummarypost
1条回答
网友
1楼 · 发布于 2024-05-29 05:26:01

您可以通过使用**将字典解压缩为kwargs来传递它

graph_retriever(str(page), 'posts', **{'since': since, 'until': until})

编辑1:

kwargs实际上必须作为关键字args传递,即函数应该被调用为

^{pr2}$

请参阅此处查看文档Python Kwargs

相关问题 更多 >

    热门问题