Я пытаюсь передать произвольное количество аргументов функции, и я продолжаю получать ошибки, и не совсем уверен, где я ошибаюсь. Это первый раз, когда я пытался использовать ** Kwargs.
В частности, я пытаюсь использовать библиотеку Facepy, чтобы получить данные из API Facebook Graph. Согласно документации (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)
Что я делаю не так?