Ich verwende Sphinx und das Autodoc-Plugin, um API-Dokumentation für meine Python-Module zu generieren. Ich kann zwar sehen, wie bestimmte Parameter gut dokumentiert werden, aber ich kann kein Beispiel dafür finden, wie ein **kwargs
Parameter dokumentiert wird.
Hat jemand ein gutes Beispiel für eine klare Möglichkeit, diese zu dokumentieren?
Antworten:
Ich denke,
subprocess
die Dokumente von -module sind ein gutes Beispiel. Geben Sie eine vollständige Liste aller Parameter für eine Top- / Elternklasse an . Beziehen Sie sich dann einfach auf diese Liste für alle anderen Vorkommen von**kwargs
.quelle
subprocess.call(*popenargs, **kwargs)
. Es ist dokumentiert,subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
wo alles nach dem*
die erkannten Schlüssel sind**kwargs
(oder zumindest die häufig verwendeten)subprocess.Popen
und ich bin mir nicht sicher, ob es kein besonders gutes Beispiel mehr ist.Nachdem ich diese Frage gefunden hatte, entschied ich mich für Folgendes: Sphinx ist gültig und funktioniert ziemlich gut:
Das
r"""..."""
ist erforderlich, um dies zu einem "rohen" Dokumentstring zu machen und damit das\*
intakt zu halten (damit Sphinx es als wörtliches Wort aufnimmt*
und nicht als Beginn der "Betonung").Die gewählte Formatierung (Liste mit Aufzählungszeichen in Klammern und durch m-Striche getrennte Beschreibung) entspricht einfach der von Sphinx bereitgestellten automatisierten Formatierung.
Sobald Sie sich bemüht haben, den Abschnitt "Schlüsselwortargumente" wie den Standardabschnitt "Parameter" aussehen zu lassen, scheint es möglicherweise einfacher zu sein, Ihren eigenen Parameterabschnitt von Anfang an zu rollen (wie in einigen anderen Antworten angegeben). , aber als Proof of Concept ist dies eine Möglichkeit, einen schönen Look als Ergänzung zu erzielen,
**kwargs
wenn Sie bereits Sphinx verwenden.quelle
Von Sphinx analysierte Google Style-Dokumentzeichenfolgen
Haftungsausschluss: nicht getestet.
Aus diesem Ausschnitt des Sphinx-Docstring-Beispiels werden die
*args
und**kwargs
nicht erweitert :Ich würde die folgende Lösung für die Kompaktheit vorschlagen :
Beachten Sie, wie,
Optional
ist für**key
Argumente nicht erforderlich .Andernfalls können Sie versuchen, die * Argumente explizit unter
Other Parameters
und**kwargs
unterKeyword Args
(siehe analysierte Abschnitte ) aufzulisten :quelle
Es gibt ein Doctstring-Beispiel für Sphinx in ihrer Dokumentation. Insbesondere zeigen sie Folgendes:
Obwohl du danach gefragt hast Sphinxausdrücklich würde ich auch auf den Google Python Style Guide verweisen . Ihr Docstring-Beispiel scheint zu implizieren, dass sie nicht speziell kwargs rufen. (other_silly_variable = Keine)
ABB hat eine Frage zur akzeptierten Antwort auf die Dokumentation der Unterprozessverwaltung. Wenn Sie ein Modul importieren, können Sie die Modul-Dokumentzeichenfolgen schnell über inspect.getsource anzeigen.
Ein Beispiel aus dem Python-Interpreter mit der Empfehlung von Silent Ghost:
Natürlich können Sie die Moduldokumentation auch über die Hilfefunktion anzeigen. Zum Beispiel Hilfe (Unterprozess)
Ich persönlich bin kein Fan des Subprozess-Docstrings für kwargs als Beispiel, aber wie im Google-Beispiel werden kwargs nicht separat aufgelistet, wie im Sphinx-Dokumentationsbeispiel gezeigt.
Ich füge diese Antwort der Frage von ABB hinzu, da es erwähnenswert ist, dass Sie die Quelle oder Dokumentation eines Moduls auf diese Weise überprüfen können, um Einblicke und Anregungen für das Kommentieren Ihres Codes zu erhalten.
quelle
other_silly_variable
ist kein kwargs-Argument, sondern ein ganz normales.Wenn jemand nach einer gültigen Syntax sucht. Hier ist ein Beispiel für eine Dokumentzeichenfolge. Genau so habe ich es gemacht, ich hoffe, es ist nützlich für Sie, aber ich kann nicht behaupten, dass es mit etwas Besonderem kompatibel ist.
quelle
Dies hängt vom verwendeten Dokumentationsstil ab. Wenn Sie jedoch den numpydoc- Stil verwenden, wird empfohlen, die Dokumentation zu
**kwargs
verwendenOther Parameters
.Zum Beispiel nach dem Beispiel von Quornian:
Beachten Sie insbesondere, dass empfohlen wird, die Standardeinstellungen von kwargs anzugeben, da diese aus der Funktionssignatur nicht ersichtlich sind.
quelle
Wenn Sie nach einer Möglichkeit suchen, dies im Numpydoc- Stil zu tun , können Sie dies einfach im Abschnitt Parameter ohne Angabe des Typs erwähnen
**kwargs
- wie im Numpydoc-Beispiel aus dem Handbuch zur napoleanischen Sphinx-Erweiterung und dem Dokumentstring-Handbuch aus dem Pandas-Dokumentationssprint 2018 gezeigt.Hier ist ein Beispiel , das ich aus gefunden LSST Entwicklerhandbuch , das sehr gut erklärt , was das sein soll Beschreibung der
**kwargs
Parameter:Aufbauend auf dem, was @Jonas Adler vorgeschlagen hat, finde ich es besser, das
**kwargs
und seine Beschreibung in einenOther Parameters
Abschnitt zu setzen - selbst dieses Beispiel aus dem Matplotlib-Dokumentationshandbuch schlägt dasselbe vor.quelle