Abrufen der Dokumentzeichenfolge von einer Funktion

183

Ich habe folgende Funktion:

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

Wie erhalte ich Zugriff auf die Dokumentzeichenfolge?

Teifion
quelle
13
Beachten Sie, dass beim Ausführen von Python mit -OO Docstrings entfernt werden. Wenn Sie beabsichtigen, Ihren Code an andere zu verteilen, denken Sie daran, dass diese ihn möglicherweise auf diese Weise ausführen. Es wird diese Leute wirklich sehr, sehr unglücklich machen, wenn Ihr Code auf Docstrings basiert, aber den Fall nicht erfasst, in dem sie nicht existieren.
DNS

Antworten:

243

Interaktiv können Sie es mit anzeigen

help(my_func)

Oder aus dem Code, mit dem Sie ihn abrufen können

my_func.__doc__
entspannen
quelle
1
Übrigens: Diese Technik funktioniert sowohl mit integrierten Funktionen als auch mit Modulen und Klassen (Testhilfe () auch für Objekte - funktioniert möglicherweise auch). Dies macht Ihre Python-Shell zu einer interaktiven Hilfeshell!
Daren Thomas
3
An der ipython-Eingabeaufforderung können Sie my_func ausführen? und es würde auch den Docstring zeigen.
Ronak
1
help (func) gibt eine lesbare Ausgabe aus, während func .__ doc__ eine Inline-Ausgabe liefert. Danke für die Antwort.
Imsrgadich
77

Sie können auch verwenden inspect.getdoc. Es bereinigt das, __doc__indem Tabulatoren auf Leerzeichen normalisiert und der Dokumentkörper nach links verschoben werden, um gemeinsame führende Leerzeichen zu entfernen.

Andrew Dalke
quelle
7

Auf ipython oder jupyter notebook können Sie alle oben genannten Möglichkeiten verwenden, aber ich gehe mit

my_func?

oder

?my_func

für eine schnelle Zusammenfassung der Methodensignatur und der Dokumentzeichenfolge.

Ich vermeide es zu benutzen

my_func??

(wie von @rohan kommentiert) für docstring und verwenden Sie es nur, um den Quellcode zu überprüfen

Sameer Sinha
quelle