Formats
Les docstrings Python peuvent être écrites suivant plusieurs formats comme les autres posts l'ont montré. Cependant, le format par défaut de la docstring de Sphinx n'a pas été mentionné et est basé sur reStructuredText (reST) . Vous pouvez trouver des informations sur les principaux formats dans ce tuto .
Notez que le reST est recommandé par le PEP 287
Voici les principaux formats utilisés pour les docstrings.
- Epytext
Historiquement, un javadoc était prédominant, il a donc été pris comme base pour la création de Epydoc (avec l'appelé Epytext
) pour générer de la documentation.
Exemple :
"""
This is a javadoc style.
@param param1: this is a first param
@param param2: this is a second param
@return: this is a description of what is returned
@raise keyError: raises an exception
"""
- ReST
Aujourd'hui, le format probablement le plus répandu est le reStructuredText (reST) qui est utilisé par Sphinx pour générer de la documentation.
Exemple :
"""
This is a reST style.
:param param1: this is a first param
:param param2: this is a second param
:returns: this is a description of what is returned
:raises keyError: raises an exception
"""
- Google
Google a son propre format qui est assez utilisé. Il peut également être interprété par Sphinx.
Exemple :
"""
This is a groups style docs.
Parameters:
param1 - this is the first param
param2 - this is a second param
Returns:
This is a description of what is returned
Raises:
KeyError - raises an exception
"""
- Numpydoc
Notez que Numpy recommande de suivre ses propres numpydoc basé sur le format Google et utilisable par Sphinx.
"""
My numpydoc description of a kind
of very exhautive numpydoc format docstring.
Parameters
----------
first : array_like
the 1st param name `first`
second :
the 2nd param
third : {'value', 'other'}, optional
the 3rd param, by default 'value'
Returns
-------
string
a value in a string
Raises
------
KeyError
when a key error
OtherError
when an other error
"""
Convertir/Générer
Il est possible d'utiliser un outil comme Pyment pour générer automatiquement les docstrings d'un projet Python non encore documenté, ou pour convertir des docstrings existants (pouvant mélanger plusieurs formats) d'un format à un autre.
Remarque : Les exemples sont tirés du Documentation sur le paiement
6 votes
python.org/dev/peps/pep-0008 il y a une section entière consacrée aux chaînes de documentation
39 votes
Je pense que cette question n'était pas assez claire parce que PEP-257 et PEP-8 établissent seulement la base pour les docstrings, mais que diriez-vous de
epydoc
,doxygen
,sphinx
? Est-ce que quelqu'un a des statistiques, est-ce que l'un d'entre eux va remplacer les autres, dans des cas comme celui-ci, trop d'options peuvent nuire.1 votes
@sorin, j'aimerais également savoir quel balisage, le cas échéant, est le plus courant. Mais je pense que la réponse est qu'aucun d'entre eux n'est vraiment très courant : les gens ont tendance à préférer regarder la source Python directement, plutôt que de la convertir en html. Ainsi, il est plus utile d'être cohérent, mais d'une manière qui est optimisée pour la lisibilité humaine, et sans balisage explicite.
3 votes
PyCharm s'autocomplète d'une manière plutôt intéressante, qui je pense est une belle implémentation des instructions nécessaires pour le faire fonctionner :
def foo(self, other):\n\t"""\n\t(blank line)\n\t:param other: \n\t:return:\n\t"""
2 votes
Laquelle de ces réponses est celle qui fonctionne par défaut avec l'analyseur documentaire de VS Code ?
0 votes
@WilliamEntriken Au moins le style google fonctionne dans VS Code, je n'ai pas vérifié les autres.