开发者

Is there an option to print the output of help()?

开发者 https://www.devze.com 2023-03-29 02:09 出处:网络
Is there an option to print the output of help(\'myfun\'). The behaviour I\'m seeing is that output is printed to std.out and the script waits for user input (i.e. type \'q\' to continue).

Is there an option to print the output of help('myfun'). The behaviour I'm seeing is that output is printed to std.out and the script waits for user input (i.e. type 'q' to continue).

There must be a setting to set this to just dump docstrings.

Alternatively, if I could just dump the docstring PLUS the "d开发者_Python百科ef f(args):" line that would be fine too.

Searching for "python help function" is comical. :) Maybe I'm missing some nice pydoc page somewhere out there that explains it all?


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.


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().


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.


>>> 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
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号