Sto cercando di passare un numero arbitrario di argomenti a una funzione e continuo a ottenere errori e non sono sicuro di dove sbaglio. Questa è la prima volta che ho tentato di usare ** Kwargs.
Più specificamente, sto cercando di utilizzare la libreria facepy per ottenere dati dall'API grafico di Facebook. Secondo la documentazione (https://facepy.readthedocs.org/en/latest/usage/graph-api.html), il get
Il metodo dovrebbe accettare parametri opzionali come "da quando", "fino a", ecc. Dato che voglio solo passare alcuni di questi parametri su una determinata query, questo sembra un momento ideale per usare ** Kwargs.
Per prima cosa creo una funzione che avvolge la libreria 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
Ecco due esempi in cui chiamo la funzione con argomenti diversi:
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']
Tuttavia, quando provo a eseguire questo, ricevo il seguente errore:
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)
Che cosa sto facendo di sbagliato?