pydoc和help()的区别是什么?
这两件事是不同的吗?在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).
"""
相比于 help
,pydocs
有更多的选项和功能。
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 foo
和 python -c "help('foo')"
是差不多的。