121 Stimmen

Können Sie die Schlüsselwortargumente auflisten, die eine Funktion erhält?

Ich habe ein Diktat, die ich brauche, um Schlüssel/Werte als Schlüsselwort Argumente übergeben Zum Beispiel

d_args = {'kw1': 'value1', 'kw2': 'value2'}
example(**d_args)

Das funktioniert gut, sondern wenn es Werte im d_args-Diktat gibt, die von der example Funktion, stirbt sie offensichtlich. Angenommen, die Beispielfunktion ist definiert als def example(kw2):

Das ist ein Problem, denn ich habe keine Kontrolle über die Erzeugung der d_args oder die example Funktion. Sie kommen beide von externen Modulen, und example akzeptiert nur einige der Schlüsselwort-Argumente aus dem dict..

Im Idealfall würde ich einfach Folgendes tun

parsed_kwargs = feedparser.parse(the_url)
valid_kwargs = get_valid_kwargs(parsed_kwargs, valid_for = PyRSS2Gen.RSS2)
PyRSS2Gen.RSS2(**valid_kwargs)

Ich werde wahrscheinlich nur das Diktat aus einer Liste gültiger Schlüsselwortargumente filtern, aber ich habe mich gefragt: Gibt es eine Möglichkeit, die Schlüsselwortargumente, die eine bestimmte Funktion benötigt, programmatisch aufzulisten?

3voto

Sumit Punkte 21

Verwenden Sie dies einfach für eine Funktion mit dem Namen 'myfun':

myfun.__code__.co_varnames

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X