python “help” function: printing docstrings

前端 未结 4 1781
小鲜肉
小鲜肉 2020-12-09 17:30

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\

相关标签:
4条回答
  • 2020-12-09 18:07
    >>> 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 讨论(0)
  • 2020-12-09 18:16

    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.

    0 讨论(0)
  • 2020-12-09 18:18

    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.

    0 讨论(0)
  • 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().

    0 讨论(0)
提交回复
热议问题