Wie kann ich eine willkürliche Anzahl von Argumenten an eine Funktion in Python (Facepy Library) übergeben?

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

Frage

Ich versuche, eine willkürliche Anzahl von Argumenten an eine Funktion zu übergeben, und ich bekomme immer wieder Fehler und bin mir nicht ganz sicher, wo ich falsch lieg. Dies ist das erste Mal, dass ich versucht habe, ** Kwargs zu verwenden.

Insbesondere versuche ich, die Facepy -Bibliothek zu verwenden, um Daten von der Facebook -Graph -API zu erhalten. Nach der Dokumentation (https://facepy.readthedocs.org/en/latest/usage/graph-api.html), das get Die Methode sollte optionale Parameter wie "seit", "bis" usw. akzeptieren, da ich nur einige dieser Parameter für eine bestimmte Abfrage übergeben möchte. Dies scheint ein idealer Zeitpunkt für die Verwendung von ** kwargs zu sein.

Zuerst erstelle ich eine Funktion, die die Facepy -Bibliothek umhüllt:

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

Hier sind zwei Beispiele, in denen ich die Funktion mit unterschiedlichen Argumenten aufrufe:

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']

Wenn ich jedoch versuche, dies auszuführen, erhalte ich den folgenden Fehler:

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)

Was mache ich falsch?

War es hilfreich?

Lösung

Sie können ein Wörterbuch als kwargs bestehen, indem Sie es auspacken **

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

Bearbeiten 1:

KWARGS muss tatsächlich als Schlüsselwort -Argumentationen übergeben werden, dh die Funktion sollte als als

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

Siehe hier für die Dokumente Python Kwargs

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top