Comment documenter des méthodes avec des paramètres en utilisant les chaînes de documentation de Python?
EDIT: PEP 257 donne cet exemple:
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
...
Est-ce la convention utilisée par la plupart des développeurs Python?
Keyword arguments:
<parameter name> -- Definition (default value if any)
Je m'attendais à quelque chose d'un peu plus formel comme
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
...
Environnement : Python 2.7.1
python
documentation
documentation-generation
David Andreoletti
la source
la source
Réponses:
Sur la base de mon expérience, les conventions numpy de docstring (PEP257) sont les surensemble plus largement répandues suivi des conventions qui sont également soutenues par des outils tels que Sphinx .
Un exemple:
la source
SEVERE: Unexpected section title
- connaissez-vous un moyen de rendre Sphinx plus heureux à ce sujet?Description
. J'ai vérifié la documentation numpy, parce que j'ai immédiatement remarqué et pensé "Attendez une seconde, pourquoi est-ce trois espaces? C'est étrange. Qui utiliserait trois espaces?"Puisque les docstrings sont de forme libre, cela dépend vraiment de ce que vous utilisez pour analyser le code afin de générer la documentation de l'API.
Je recommanderais de vous familiariser avec le balisage Sphinx , car il est largement utilisé et devient le standard de facto pour documenter les projets Python, en partie à cause de l'excellent service readthedocs.org . Pour paraphraser un exemple de la documentation Sphinx en tant qu'extrait de code Python:
Ce balisage prend en charge les références croisées entre les documents et plus encore. Notez que la documentation Sphinx utilise (par exemple)
:py:attr:
alors que vous pouvez simplement l'utiliser:attr:
lors de la documentation à partir du code source.Naturellement, il existe d'autres outils pour documenter les API. Il y a le Doxygen plus classique qui utilise des
\param
commandes mais celles-ci ne sont pas spécifiquement conçues pour documenter le code Python comme Sphinx.Notez qu'il y a une question similaire avec une réponse similaire ici ...
la source
list
.Conventions:
Outils:
Mise à jour: depuis Python 3.5, vous pouvez utiliser des indices de type qui sont une syntaxe compacte et lisible par machine:
Le principal avantage de cette syntaxe est qu'elle est définie par le langage et qu'elle est sans ambiguïté, donc des outils comme PyCharm peuvent facilement en tirer parti.
la source
Les chaînes de documentation python sont de forme libre , vous pouvez les documenter comme vous le souhaitez.
Exemples:
Maintenant, il y a quelques conventions, mais python n'en applique aucune. Certains projets ont leurs propres conventions. Certains outils pour travailler avec des docstrings suivent également des conventions spécifiques.
la source
Si vous prévoyez d'utiliser Sphinx pour documenter votre code, il est capable de produire des documents HTML bien formatés pour vos paramètres grâce à leur fonction de «signatures». http://sphinx-doc.org/domains.html#signatures
la source
Le courant dominant, comme d'autres réponses l'ont déjà souligné, va probablement avec la méthode Sphinx afin que vous puissiez utiliser Sphinx pour générer ces documents sophistiqués plus tard.
Cela étant dit, personnellement, j'utilise parfois le style de commentaire en ligne.
Un autre exemple ici, avec quelques petits détails documentés en ligne:
Les avantages (comme @ mark-horvath déjà souligné dans un autre commentaire) sont:
Maintenant, certains peuvent penser que ce style a l'air "moche". Mais je dirais que «laid» est un mot subjectif. Une manière plus neutre est de dire que ce style n'est pas courant, donc il peut vous sembler moins familier, donc moins confortable. Encore une fois, «confortable» est également un mot subjectif. Mais le fait est que tous les avantages décrits ci-dessus sont objectifs. Vous ne pouvez pas les atteindre si vous suivez la méthode standard.
Espérons qu'un jour dans le futur, il y aura un outil de génération de documents qui pourra également consommer un tel style en ligne. Cela stimulera l'adoption.
PS: Cette réponse est dérivée de ma propre préférence d'utiliser des commentaires en ligne chaque fois que je le juge opportun. J'utilise également le même style en ligne pour documenter un dictionnaire .
la source
S'appuyant sur la réponse des indices de type ( https://stackoverflow.com/a/9195565/2418922 ), qui fournit un moyen mieux structuré de documenter les types de paramètres, il existe également une manière structurée de documenter à la fois le type et les descriptions des paramètres:
exemple adopté de: https://pypi.org/project/autocommand/
la source
Les docstrings ne sont utiles que dans les environnements interactifs, par exemple le shell Python. Lorsque vous documentez des objets qui ne seront pas utilisés de manière interactive (par exemple, des objets internes, des rappels de framework), vous pouvez également utiliser des commentaires réguliers. Voici un style que j'utilise pour suspendre les commentaires en retrait des éléments, chacun sur leur propre ligne, afin que vous sachiez que le commentaire s'applique à:
Vous ne pouvez pas faire ce genre de chose avec des docstrings.
la source