Получение строки документа из функции


184

У меня есть следующая функция:

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

Как мне получить доступ к документации?


13
Обратите внимание, что запуск Python с -OO удаляет строки документации. Если вы намереваетесь распространять свой код среди других, имейте в виду, что они могут выполнять его таким образом. Это действительно сделает тех людей действительно несчастными, если ваш код опирается на строки документации, но не поймает тот случай, когда они не существуют.
DNS

Ответы:


243

Интерактивно вы можете отобразить его с помощью

help(my_func)

Или из кода вы можете получить его с

my_func.__doc__

1
Кстати: этот метод работает со встроенными функциями, а также с модулями и классами (test help () также с объектами - также может работать). Это делает вашу оболочку python интерактивной справочной оболочкой!
Дарен Томас

3
В приглашении ipython вы можете сделать my_func ?? и это также покажет строку документации.
Ронак

1
help (func) дает читабельный вывод, а func .__ doc__ - встроенный вывод. Спасибо за ответ.
imsrgadich

77

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


8

На ноутбуке ipython или jupyter вы можете использовать все вышеперечисленные способы, но я иду с

my_func?

или

?my_func

для быстрого суммирования как сигнатуры метода, так и строки документа.

Я избегаю использования

my_func??

(как прокомментировал @rohan) для строки документации и используйте ее только для проверки исходного кода

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.