J'ai vu différents styles d'écriture de docstrings en Python, y a-t-il un style officiel ou "convenu"?
python
coding-style
documentation
docstring
Noah McIlraith
la source
la source
epydoc
,doxygen
,sphinx
? Quelqu'un at-il des statistiques, est-ce que l'un d'entre eux remplacera les autres, dans des cas comme celui-ci, trop d'options peuvent faire mal.def foo(self, other):\n\t"""\n\t(blank line)\n\t:param other: \n\t:return:\n\t"""
Réponses:
Les formats
Les docstrings Python peuvent être écrits en suivant plusieurs formats comme les autres articles l'ont montré. Cependant, le format de docstring Sphinx par défaut n'a pas été mentionné et est basé sur reStructuredText (reST) . Vous pouvez obtenir des informations sur les principaux formats dans cet article de blog .
Notez que le reST est recommandé par le PEP 287
Voici les principaux formats utilisés pour les docstrings.
- Epytext
Historiquement, un style de javadoc était répandu, il a donc été pris comme base pour Epydoc (avec le
Epytext
format appelé ) pour générer de la documentation.Exemple:
- du repos
De nos jours, le format probablement le plus répandu est le format reStructuredText (reST) utilisé par Sphinx pour générer de la documentation. Remarque: il est utilisé par défaut dans JetBrains PyCharm (tapez des guillemets triples après avoir défini une méthode et appuyez sur Entrée). Il est également utilisé par défaut comme format de sortie dans Pyment.
Exemple:
- Google
Google a son propre format qui est souvent utilisé. Il peut également être interprété par Sphinx (c'est-à-dire en utilisant le plugin Napoléon ).
Exemple:
Même plus d'exemples
- Numpydoc
Notez que Numpy recommande de suivre leur propre numpydoc basé sur le format Google et utilisable par Sphinx.
Conversion / génération
Il est possible d'utiliser un outil comme Pyment pour générer automatiquement des docstrings vers un projet Python non encore documenté, ou pour convertir des docstrings existantes (peut mélanger plusieurs formats) d'un format à un autre.
Remarque: Les exemples sont tirés de la documentation Pyment
la source
Le guide de style Google contient un excellent guide de style Python. Il comprend des conventions pour la syntaxe de docstring lisible qui offre un meilleur guidage que PEP-257. Par exemple:
J'aime étendre cela pour inclure également les informations de type dans les arguments, comme décrit dans ce tutoriel de documentation Sphinx . Par exemple:
la source
Les conventions de docstring sont dans PEP-257 avec beaucoup plus de détails que PEP-8.
Cependant, les docstrings semblent être beaucoup plus personnels que les autres domaines du code. Différents projets auront leur propre standard.
J'ai tendance à toujours inclure des docstrings, car ils ont tendance à montrer comment utiliser la fonction et ce qu'elle fait très rapidement.
Je préfère garder les choses cohérentes, quelle que soit la longueur de la chaîne. J'aime coder l'apparence lorsque l'indentation et l'espacement sont cohérents. Cela signifie que j'utilise:
Plus de:
Et ont tendance à laisser les commentaires sur la première ligne dans des docstrings plus longs:
Ce qui signifie que je trouve que les docstrings qui commencent comme ça sont en désordre.
la source
"""Return the squared result"""
plutôt que"""Returns the squared result"""
. Bien que personnellement, j'écris le mien comment Tim est ici, malgré ce que dit le PEP.Comme apparemment personne ne l'a mentionné: vous pouvez également utiliser le Numpy Docstring Standard . Il est largement utilisé dans la communauté scientifique.
L'extension du sphinx napoléon pour analyser les docstrings de style Google (recommandée dans la réponse de @Nathan) prend également en charge la docstring de style Numpy et fait une courte comparaison des deux.
Et dernier exemple de base pour donner une idée à quoi cela ressemble:
la source
PEP-8 est la norme de codage python officielle. Il contient une section sur les docstrings, qui fait référence au PEP-257 - une spécification complète pour les docstrings.
la source
C'est Python; tout se passe . Considérez comment publier votre documentation . Les docstrings sont invisibles sauf pour les lecteurs de votre code source.
Les gens aiment vraiment parcourir et rechercher de la documentation sur le Web. Pour ce faire, utilisez l'outil de documentation Sphinx . C'est la norme de facto pour la documentation des projets Python. Le produit est beau - jetez un œil à https://python-guide.readthedocs.org/en/latest/ . Le site Web Read the Docs hébergera vos documents gratuitement.
la source
ipython
pour tester une bibliothèque, et cela rend la lecture des docstrings très simple - tout ce que j'ai à taper estyour_module.some_method_im_curious_about?
et j'obtiens une impression agréable, y compris docstring.help
fonction sur la fonction / méthode / classe documentée (et que vous pouvez le faire même si vous n'avez accès qu'au module compilé). Personnellement, je pense qu'il faut garder cela à l'esprit lors du choix de la convention docstring (c'est-à-dire qu'elle est destinée à être lue telle quelle).Je suggère d'utiliser le programme Pep257 Python de Vladimir Keleshev pour vérifier vos docstrings par rapport à PEP-257 et à la norme Numpy Docstring pour décrire les paramètres, les retours, etc.
pep257 signalera la divergence que vous faites par rapport à la norme et est appelé comme pylint et pep8.
la source
pydocstyle --select=D4 tmp.py
vérifie une gamme de problèmes de contenu de docstring, y compris le nommage des sections.