2009-04-03 15 views
114

J'ai la fonction suivante:Obtenir le docstring d'une fonction

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

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

+9

Notez que l'exécution de Python avec -OO bandes sur 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 vraiment ces gens vraiment mécontents si votre code repose sur des docstrings, mais n'attrape pas le cas où ils n'existent pas. – DNS

+1

Bravo pour ça, c'est une information plutôt utile. – Teifion

+0

@DNS Merci, je me demandais pourquoi tous mes docstrings étaient None. – Timo

Répondre

157

interactivement, vous pouvez l'afficher avec

help(my_func) 

Ou du code que vous pouvez récupérer avec

my_func.__doc__ 
+1

BTW: Cette technique fonctionne avec des fonctions intégrées ainsi que des modules et des classes (aide au test() avec des objets aussi - pourrait aussi fonctionner). Cela rend votre shell python un shell d'aide interactif! –

+2

Sur l'invite ipython, vous pouvez faire my_func ?? et il montrerait le docstring aussi bien. – ronak

+3

Python est tellement cool – ThorSummoner

56

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

+1

Maintenant c'est exactement ce que j'essayais de faire moi-même. Merci pour ça. – ereOn

1

Sur ipython ou ordinateur portable jupyter, vous pouvez utiliser tous les moyens mentionnés ci-dessus, mais j'aller avec

my_func? 

ou

?my_func 

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

J'éviter d'utiliser

my_func?? 

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

Questions connexes