您可以通过使用夸大来传递词典 **
graph_retriever(str(page), 'posts', **{'since': since, 'until': until})
编辑1:
Kwargs实际上必须通过关键词args,即该函数应称为
graph_retriever(str(page), 'posts', since= since, until= until)
请参阅此处的文档 Python Kwargs
题
我正在尝试将任意数量的参数传递给一个函数,但我不断遇到错误,而不确定我的出错了。这是我第一次尝试使用** kwargs。
更具体地说,我正在尝试使用facepy库从Facebook的Graph API获取数据。根据文档(https://facepy.readthedocs.org/en/latest/usage/graph-api.html), 这 get
方法应接受可选参数,例如“自”,“直到”等。由于我只想在任何给定查询上传递其中一些参数,因此这似乎是使用** kwargs的理想时间。
首先,我创建一个包裹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
这是两个示例,我将其称为不同参数的函数:
for since, until in day_segmenter(start, end): # loop through the date range
raw_post_data = graph_retriever(str(page), 'posts', {'since': since, 'until': until})
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)
我究竟做错了什么?
解决方案
您可以通过使用夸大来传递词典 **
graph_retriever(str(page), 'posts', **{'since': since, 'until': until})
编辑1:
Kwargs实际上必须通过关键词args,即该函数应称为
graph_retriever(str(page), 'posts', since= since, until= until)
请参阅此处的文档 Python Kwargs