Obtenir la docstring à partir d'une fonction

184

J'ai la fonction suivante:

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

Comment accéder à la docstring?

Teifion
la source
13
Notez que l'exécution de Python avec -OO supprime les docstrings. Si vous avez l'intention de distribuer votre code à d'autres, gardez à l'esprit qu'ils peuvent l'exécuter de cette façon. Cela rendra ces personnes vraiment très mécontentes si votre code repose sur des docstrings, mais ne comprend pas le cas où elles n'existent pas.
DNS

Réponses:

243

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__
se détendre
la source
1
BTW: Cette technique fonctionne avec des fonctions intégrées ainsi que des modules et des classes (test help () avec des objets aussi - peut également fonctionner). Cela fait de votre shell python un shell d'aide interactif!
Daren Thomas
3
Sur l'invite ipython, vous pouvez faire my_func ?? et il afficherait également le docstring.
ronak
1
help (func) donne une sortie lisible tandis que func .__ doc__ donne une sortie en ligne. Merci d'avoir répondu.
imsrgadich
77

Vous pouvez également utiliser inspect.getdoc. Il nettoie le __doc__en normalisant les onglets en espaces et en déplaçant à gauche le corps du document pour supprimer les espaces de début communs.

Andrew Dalke
la source
8

Sur ipython ou jupyter notebook, vous pouvez utiliser toutes les méthodes mentionnées ci-dessus, mais je vais avec

my_func?

ou

?my_func

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

J'évite d'utiliser

my_func??

(comme commenté par @rohan) pour docstring et utilisez-le uniquement pour vérifier le code source

Sameer Sinha
la source