Функция "help" python: печать docstrings

Можно ли распечатать вывод справки ('myfun'). Поведение, которое я вижу, это вывод вывода на std.out, а script ожидает ввода пользователя (т.

Должна быть установка, чтобы установить это, чтобы просто выгрузить docstrings.

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

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

Ответ 1

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

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

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

Ответ 2

Если вы хотите получить доступ к необработанной строке документации из кода:

   myvar = obj.__doc__
   print(obj.__doc__)

Функция справки выполняет некоторую дополнительную обработку, принятый ответ показывает, как повторить это с помощью pydoc.render_doc().

Ответ 3

Вы уже видели ссылку на docstring, волшебную переменную __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')

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

Ответ 4

>>> 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.'

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

edit - вы можете 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