関数に任意の数の引数を渡そうとしていますが、エラーが発生し続け、どこが間違っているのかよくわかりません。**kwargs を使用しようとしたのはこれが初めてです。
具体的には、Facepy ライブラリを使用して Facebook の Graph API からデータを取得しようとしています。ドキュメント ( https://facepy.readthedocs.org/en/latest/usage/graph-api.html ) によると、get
メソッドは「since」、「until」などのオプションのパラメーターを受け入れる必要があります。これらのパラメーターのいくつかを特定のクエリに渡す場合、これは **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
異なる引数で関数を呼び出す 2 つの例を次に示します。
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)
私は何を間違っていますか?