J'essaie de passer un nombre arbitraire d'arguments à une fonction, et je continue d'obtenir des erreurs, et je ne sais pas trop où je vais mal. C'est la première fois que j'essaie d'utiliser ** kwargs.
Plus précisément, j'essaie d'utiliser la bibliothèque FACEPY pour obtenir des données de l'API Graph de Facebook. Selon la documentation (https://facepy.readthedocs.org/en/latest/usage/graph-api.html), la get
La méthode doit accepter des paramètres facultatifs comme "puisque", "jusqu'à", etc. Comme je veux seulement passer certains de ces paramètres sur une requête donnée, cela semble être un moment idéal pour utiliser ** kwargs.
Je crée d'abord une fonction qui enveloppe la bibliothèque 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
Voici deux exemples où j'appelle la fonction avec des arguments différents:
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']
Cependant, lorsque j'essaie d'exécuter ceci, j'obtiens l'erreur suivante:
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)
Qu'est-ce que je fais mal?