pydoc和help()的区别是什么?

1 投票
3 回答
1281 浏览
提问于 2025-04-16 20:52

这两件事是不同的吗?在Python中,它们给出的结果是相似的。

3 个回答

0

简单来说,我觉得 pydocs 就像是 Tesla, Inc.,而 help 就像是特斯拉的一款产品,比如 Tesla Model S

如果你查看 help 函数的代码,会发现里面明确提到 help 是在使用 pydocs.help

"""
Define the built-in 'help'.
    This is a wrapper around pydoc.help (with a twist).
"""

相比于 helppydocs 有更多的选项和功能。

3

这个互动的 help 函数其实就是在用 pydoc 这个工具。从源代码来看:

class _Helper(object):                                 
    """Define the builtin 'help'.                      
    This is a wrapper around pydoc.help (with a twist).

    """                                                

    def __repr__(self):                                
        return "Type help() for interactive help, " \  
               "or help(object) for help about object."
    def __call__(self, *args, **kwds):                 
        import pydoc                                   
        return pydoc.help(*args, **kwds)  

注意 __call__ 这个定义。

你可以通过输入 help(help) 来查看文档哦;-)

下次如果你想看看源代码,可以使用 inspect 模块自己查一下。

如果你想自己探索一下,下面的代码可以返回一个对象的模块定义的源代码:

inspect.getsource(inspect.getmodule(help))
4

help() 是一个 Python 的函数。

pydoc 是一个命令行工具,可以用来做和 help() 一样的事情。

如果你想更深入了解 pydoc 的功能,可以看看 pydoc.py 文件(用 import pydoc; pydoc.__file__ 来找到它),看看里面的 cli 函数。这个函数里面有一些额外的导入操作,但我觉得其实没必要,因为 help() 也可以接受一个字符串,这个字符串会被以类似的方式处理。所以如果你有一个叫 "foo.py" 的文件,运行 python 然后输入 help('foo'),得到的结果和 import foo; help(foo) 基本上是一样的,只是排版上可能有些小差别。我想这可能是历史原因造成的。

简单来说,pydoc foopython -c "help('foo')" 是差不多的。

撰写回答