任意の数の引数をPython(Facepy Library)の関数に渡すにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/19825223

質問

私は任意の数の引数を関数に渡そうとしていますが、エラーを受け続けています。どこで間違っているのかよくわかりません。 ** 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)

私は何が間違っているのですか?

役に立ちましたか?

解決

辞書をkwargsとして渡すことができます。 **

graph_retriever(str(page), 'posts', **{'since': since, 'until': until})

編集1:

Kwargsは、キーワードargsのように実際に渡されなければなりません。つまり、関数は

graph_retriever(str(page), 'posts', since= since, until= until)

ドキュメントについてはこちらをご覧ください Python Kwargs

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top