244 votes

Obtenir la docstring d'une fonction

J'ai la fonction suivante :

def my_func():
    """My docstring is both funny and informative"""
    pass

Comment puis-je avoir accès à la docstring ?

18 votes

Notez que l'exécution de Python avec -OO supprime les docstrings. Si vous avez l'intention de distribuer votre code à d'autres personnes, n'oubliez pas qu'elles peuvent l'exécuter de cette façon. Ces personnes seront vraiment très malheureuses si votre code repose sur les docstrings, mais ne prend pas en compte le cas où elles n'existent pas.

340voto

unwind Points 181987

De manière interactive, vous pouvez l'afficher avec

help(my_func)

Ou à partir du code, vous pouvez le récupérer avec

my_func.__doc__

3 votes

BTW : Cette technique fonctionne aussi bien avec les fonctions intégrées qu'avec les modules et les classes (testez help() avec des objets - cela pourrait aussi fonctionner). Cela fait de votre shell python un shell d'aide interactif !

7 votes

A l'invite d'ipython, vous pouvez faire my_func ?? et il affichera également la docstring.

2 votes

Help(func) donne une sortie lisible alors que func.__doc__ donne une sortie en ligne. Merci pour la réponse.

99voto

Andrew Dalke Points 7607

Vous pouvez également utiliser inspect.getdoc . Il nettoie le __doc__ en normalisant les tabulations en espaces et en décalant vers la gauche le corps du document pour supprimer les espaces de tête courants.

12voto

Sameer Sinha Points 111

Sur ipython ou jupyter notebook, vous pouvez utiliser toutes les méthodes mentionnées ci-dessus, mais j'opte pour la méthode suivante

my_func?

o

?my_func

pour un résumé rapide de la signature de la méthode et de la docstring.

J'évite d'utiliser

my_func??

(comme commenté par @rohan) pour la docstring et l'utiliser uniquement pour vérifier le code source.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X