Отримання docstring з функції


184

У мене є така функція:

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

Як отримати доступ до docstring?


13
Зауважте, що запуск Python з -OO викреслює документи. Якщо ви маєте намір поширити свій код іншим, майте на увазі, що вони можуть запустити його таким чином. Це зробить цих людей по-справжньому нещасними, якщо ваш код покладається на docstrings, але не сприймає випадок, коли їх не існує.
DNS

Відповіді:


243

В інтерактивному режимі ви можете відображати його

help(my_func)

Або з коду ви можете отримати його

my_func.__doc__

1
BTW: Ця методика працює як з вбудованими функціями, так і з модулями та класами (тестова довідка () і з об'єктами - також може працювати). Це робить вашу оболонку пітона інтерактивною довідковою оболонкою!
Дарен Томас

3
У запиті ipython ви можете зробити my_func ?? і це також показало б докстринг.
ronak

1
довідка (func) дає читабельний вихід, тоді як func .__ doc__ дає вихідний результат. Дякую за відповідь.
imsrgadich

77

Ви також можете використовувати inspect.getdoc. Він очищає __doc__, нормалізуючи вкладки на пробіли і переміщуючи тіло doc, щоб видалити загальні провідні простори.


8

У зошиті ipython або jupyter ви можете використовувати всі вищезгадані способи, але я переходжу з

my_func?

або

?my_func

для швидкого зведення як підпису методу, так і docstring.

Я уникаю використання

my_func??

(як коментує @rohan) для docstring і використовуйте його лише для перевірки вихідного коду

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.