Wie dokumentiere ich Methoden mit Parametern mithilfe der Python-Dokumentationszeichenfolgen?
EDIT: PEP 257 gibt dieses Beispiel:
def complex(real=0.0, imag=0.0):
"""Form a complex number.
Keyword arguments:
real -- the real part (default 0.0)
imag -- the imaginary part (default 0.0)
"""
if imag == 0.0 and real == 0.0: return complex_zero
...
Ist dies die Konvention, die von den meisten Python-Entwicklern verwendet wird?
Keyword arguments:
<parameter name> -- Definition (default value if any)
Ich hatte etwas Formaleres erwartet wie
def complex(real=0.0, imag=0.0):
"""Form a complex number.
@param: real The real part (default 0.0)
@param: imag The imaginary part (default 0.0)
"""
if imag == 0.0 and real == 0.0: return complex_zero
...
Umgebung : Python 2.7.1
python
documentation
documentation-generation
David Andreoletti
quelle
quelle
Antworten:
Aufgrund meiner Erfahrung, die numpy docstring Konventionen (PEP257 Obermenge) sind die am weitesten verbreiteten gefolgt Konventionen, die auch von Werkzeugen, wie unterstützt Sphinx .
Ein Beispiel:
quelle
SEVERE: Unexpected section title
- wissen Sie, wie Sie Sphinx darüber glücklicher machen können?Description
. Ich überprüfte die Numpy-Dokumentation, weil ich sofort bemerkte und dachte: "Da Docstrings Freiform sind, hängt es wirklich davon ab, was Sie zum Parsen von Code zum Generieren von API-Dokumentation verwenden.
Ich würde empfehlen, sich mit dem Sphinx-Markup vertraut zu machen , da es weit verbreitet ist und zum De-facto-Standard für die Dokumentation von Python-Projekten wird, auch aufgrund des hervorragenden Dienstes readthedocs.org . So umschreiben Sie ein Beispiel aus der Sphinx-Dokumentation als Python-Snippet:
Dieses Markup unterstützt Querverweise zwischen Dokumenten und mehr. Beachten Sie, dass in der Sphinx-Dokumentation (z. B.) verwendet wird,
:py:attr:
während Sie diese nur:attr:
beim Dokumentieren aus dem Quellcode verwenden können.Natürlich gibt es auch andere Tools zum Dokumentieren von APIs. Es gibt das klassischere Doxygen , das
\param
Befehle verwendet , die jedoch nicht speziell für die Dokumentation von Python-Code wie Sphinx entwickelt wurden.Beachten Sie, dass es hier eine ähnliche Frage mit einer ähnlichen Antwort gibt ...
quelle
list
.Konventionen:
Werkzeuge:
Update: Seit Python 3.5 können Sie Typhinweise verwenden, die eine kompakte, maschinenlesbare Syntax darstellen:
Der Hauptvorteil dieser Syntax besteht darin, dass sie durch die Sprache definiert und eindeutig ist, sodass Tools wie PyCharm leicht davon profitieren können.
quelle
Python-Dokumentzeichenfolgen sind Freiform- Zeichenfolgen. Sie können sie nach Belieben dokumentieren.
Beispiele:
Nun gibt es einige Konventionen, aber Python erzwingt keine von ihnen. Einige Projekte haben ihre eigenen Konventionen. Einige Tools zum Arbeiten mit Docstrings folgen ebenfalls bestimmten Konventionen.
quelle
Wenn Sie Sphinx zur Dokumentation Ihres Codes verwenden möchten, können Sie gut formatierte HTML-Dokumente für Ihre Parameter mit der Funktion "Signaturen" erstellen. http://sphinx-doc.org/domains.html#signatures
quelle
Wie andere Antworten hier bereits dargelegt haben, geht der Mainstream wahrscheinlich mit der Sphinx-Methode einher, sodass Sie Sphinx verwenden können, um diese ausgefallenen Dokumente später zu generieren.
Davon abgesehen gehe ich gelegentlich gelegentlich mit Inline-Kommentaren um.
Ein weiteres Beispiel hier mit einigen winzigen Details, die inline dokumentiert sind:
Die Vorteile (wie @ mark-horvath bereits in einem anderen Kommentar hervorgehoben hat) sind:
Nun mögen einige denken, dass dieser Stil "hässlich" aussieht. Aber ich würde sagen, "hässlich" ist ein subjektives Wort. Eine neutralere Art ist zu sagen, dass dieser Stil kein Mainstream ist, so dass er Ihnen weniger vertraut und daher weniger bequem erscheint. Auch hier ist "bequem" ein subjektives Wort. Der Punkt ist jedoch, dass alle oben beschriebenen Vorteile objektiv sind. Sie können sie nicht erreichen, wenn Sie dem Standardweg folgen.
Hoffentlich wird es eines Tages ein Dokumentgenerator-Tool geben, das auch einen solchen Inline-Stil verwenden kann. Das wird die Adoption vorantreiben.
PS: Diese Antwort ergibt sich aus meiner eigenen Präferenz, Inline-Kommentare zu verwenden, wann immer ich es für richtig halte. Ich verwende den gleichen Inline-Stil, um auch ein Wörterbuch zu dokumentieren .
quelle
Aufbauend auf der Antwort auf Typhinweise ( https://stackoverflow.com/a/9195565/2418922 ), die eine besser strukturierte Möglichkeit zur Dokumentation von Parametertypen bietet, gibt es auch eine strukturierte Methode zur Dokumentation von Typ und Beschreibung von Parametern:
Beispiel übernommen von: https://pypi.org/project/autocommand/
quelle
Docstrings sind nur in interaktiven Umgebungen nützlich, z. B. in der Python-Shell. Wenn Sie Objekte dokumentieren, die nicht interaktiv verwendet werden sollen (z. B. interne Objekte, Framework-Rückrufe), können Sie auch regelmäßige Kommentare verwenden. Hier ist ein Stil, den ich zum Aufhängen eingerückter Kommentare an Elementen verwende, die jeweils in einer eigenen Zeile stehen, damit Sie wissen, dass der Kommentar gilt für:
Mit docstrings kann man so etwas nicht machen.
quelle