Функция помощи "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