我试图将任意数量的参数传递给一个函数,但我不断地出错,而且不太确定哪里出错了。这是我第一次尝试使用**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)
我做错什么了?在
您可以通过使用
**
将字典解压缩为kwargs来传递它编辑1:
kwargs实际上必须作为关键字args传递,即函数应该被调用为
^{pr2}$请参阅此处查看文档Python Kwargs
相关问题 更多 >
编程相关推荐