python “help” function: printing docstrings

岁酱吖の 提交于 2019-11-29 03:29:18

To get exactly the help that's printed by help(str) into the variable strhelp:

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

Of course you can then easily print it without paging, etc.

You've already seen reference to the docstring, the magic __doc__ variable which holds the body of the help:

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

print foo.__doc__ # DOES NOTHING!!!!

To get the name of a function, you just use __name__:

def foo(a,b,c): pass

print foo.__name__ # foo

The way to get the signature of a function which is not built in you can use the func_code property and from that you can read its co_varnames:

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

I've not found out how to do the same for built in functions.

If you want to access the raw docstring from code:

   myvar = obj.__doc__
   print(obj.__doc__)

The help function does some additional processing, the accepted answer shows how to replicate this with pydoc.render_doc().

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

Is that what you needed?

edit - you can print(x.__doc__) and concerning the function signature, you can build it using the inspect module.

>>> 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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!