Wir haben eine Menge Code in unserer internen Codebasis, der unsere Bibliotheken intern aufruft - diese Bibliotheken haben oft eine Menge Argumente (man denke an matplotlib) und unser Code erledigt oft nur eine bestimmte Aufgabe und übergibt sie einfach **kwargs
an die nächste aufgerufene Funktion.
Z.B:
def our_method(dataframe, **kwargs):
result = do_something_with_data(dataframe)
external_module.draw(result, **kwargs)
Es **kwargs
verhindert zwar, dass wir alle Parameter in unserer Methodendeklaration wiederholen, macht aber auch extrem undurchsichtig, welche Argumente beim Aufruf gültig sind our_method
- ich muss wissen, welche Methode aufgerufen wird, was ich oft nicht wissen möchte.
Wie sehen Sie das?
Wenn die Funktion der nächsten Ebene ein __doc__ enthält, können Sie das __doc__ einfach in Ihre neue Funktion kopieren.
Beispielsweise:
Dies kann rekursiv angewendet werden und kann von einem Dekorateur angewendet werden (was nützlich sein kann, wenn Sie dies trotzdem in großen Mengen tun). Die Zeichenfolge __doc__ kann auch bearbeitet werden, um dem Ende mehr hinzuzufügen. Dies bedeutet, dass die angezeigten Parameter weiterhin kwargs sind, aber es gibt zumindest eine Dokumentation in der Hilfe, die die tatsächlichen Parameter beschreibt.
quelle