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