Функция помощи "python ": печать строк документов

Есть ли возможность распечатать вывод справки ("myfun"). Поведение, которое я наблюдаю, состоит в том, что вывод выводится в std.out, и сценарий ожидает ввода пользователя (т. Е. Введите "q" для продолжения).

Должна быть настройка, чтобы установить это просто для выгрузки строк документации.

В качестве альтернативы, если бы я мог просто вывести строку документации PLUS со строкой "def f(args):", это тоже подойдет.

Поиск "функции помощи Python" комичен.:) Может быть, мне не хватает какой-нибудь красивой страницы pydoc где-то там, где все это объясняется?

4 ответа

Решение

Чтобы получить именно ту помощь, которая напечатана help(str) в переменную strhelp:

import pydoc
strhelp = pydoc.render_doc(str, "Help on %s")

Конечно, вы можете легко распечатать его без подкачки и т. Д.

Просто

print obj.__doc__

или же

myvar = obj.__doc__

Функция справки существует для просмотра справки в интерактивном режиме, и ее можно легко получить без нее.

Вы уже видели ссылку на строку документации, магию __doc__ переменная, которая содержит тело справки:

def foo(a,b,c): 
   ''' DOES NOTHING!!!! '''
   pass

print foo.__doc__ # DOES NOTHING!!!!

Чтобы получить имя функции, вы просто используете __name__:

def foo(a,b,c): pass

print foo.__name__ # foo

Чтобы получить подпись функции, которая не встроена, вы можете использовать свойство func_code, из которого вы можете прочитать его co_varnames:

def foo(a,b,c): pass
print foo.func_code.co_varnames # ('a', 'b', 'c')

Я не узнал, как сделать то же самое для встроенных функций.

>>> x = 2
>>> x.__doc__
'int(x[, base]) -> integer\n\nConvert a string or number to an integer, if possi
ble.  A floating point\nargument will be truncated towards zero (this does not i
nclude a string\nrepresentation of a floating point number!)  When converting a
string, use\nthe optional base.  It is an error to supply a base when converting
 a\nnon-string. If the argument is outside the integer range a long object\nwill
 be returned instead.'

Это то, что вам нужно?

редактировать - вы можете print(x.__doc__) а что касается сигнатуры функции, вы можете построить ее, используя inspect модуль.

>>> inspect.formatargspec(inspect.getargspec(os.path.join))
'((a,), p, None, None)'
>>> help(os.path.join)
Help on function join in module ntpath:

join(a, *p)
    Join two or more pathname components, inserting "\" as needed
Другие вопросы по тегам