pydoc
— 文档生成器和在线帮助系统¶
源代码: Lib/pydoc.py
pydoc
模块自动从 Python 模块生成文档。该文档可以以文本页面的形式在控制台上呈现,也可以提供给 Web 浏览器,或保存为 HTML 文件。
对于模块、类、函数和方法,显示的文档来源于对象的文档字符串(即 __doc__
属性),以及其可文档成员的文档字符串(递归)。如果没有文档字符串,pydoc
会尝试从源代码文件中类、函数或方法定义上方的注释行块,或模块的顶部获取描述(请参阅 inspect.getcomments()
)。
内置函数 help()
调用交互式解释器中的在线帮助系统,该系统使用 pydoc
在控制台上生成其文本形式的文档。通过在操作系统的命令提示符下以脚本形式运行 pydoc,也可以在 Python 解释器外部查看相同的文本文档。例如,在 shell 提示符下运行
python -m pydoc sys
将显示关于 sys
模块的文档,其样式类似于 Unix man 命令显示的帮助页。pydoc 的参数可以是函数、模块或包的名称,也可以是对模块或包中类、方法或函数的点式引用。如果 pydoc 的参数看起来像路径(即,它包含操作系统的路径分隔符,例如 Unix 中的斜杠),并且指的是现有的 Python 源代码文件,那么将为该文件生成文档。
注意
为了查找对象及其文档,pydoc
会导入要记录的模块。因此,模块级别的任何代码都会在该场合执行。使用 if __name__ == '__main__':
防护来仅在文件作为脚本调用时执行代码,而不是仅仅被导入。
当向控制台打印输出时,pydoc 会尝试对输出进行分页,以便于阅读。如果设置了 MANPAGER
或 PAGER
环境变量,则 pydoc 将使用其值作为分页程序。当两者都设置时,将使用 MANPAGER
。
在参数之前指定 -w
标志,将导致 HTML 文档写入当前目录中的文件,而不是在控制台上显示文本。
在参数之前指定 -k
标志,将以类似于 Unix man 命令的方式,在所有可用模块的概要行中搜索作为参数给定的关键字。模块的概要行是其文档字符串的第一行。
您还可以使用 pydoc 在本地计算机上启动 HTTP 服务器,该服务器将向访问的 Web 浏览器提供文档。 python -m pydoc -p 1234 将在端口 1234 上启动 HTTP 服务器,允许您在首选的 Web 浏览器中浏览 https://127.0.0.1:1234/
处的文档。将端口号指定为 0
将选择任意未使用的端口。
python -m pydoc -n <hostname> 将启动服务器以侦听给定的主机名。默认情况下,主机名是 'localhost',但如果您希望从其他机器访问服务器,您可能需要更改服务器响应的主机名。在开发过程中,如果您想从容器内运行 pydoc,这将特别有用。
python -m pydoc -b 将启动服务器并额外打开一个 Web 浏览器到模块索引页。每个服务页面顶部都有一个导航栏,您可以在其中 获取 关于单个项目的帮助,搜索 所有模块的概要行中带有关键字的模块,并转到 模块索引、主题 和 关键字 页面。
当 pydoc 生成文档时,它使用当前的环境和路径来定位模块。因此,调用 pydoc spam 所记录的模块版本,与您启动 Python 解释器并键入 import spam
时获得的模块版本完全相同。
核心模块的模块文档假定位于 https://docs.pythonlang.cn/X.Y/library/
中,其中 X
和 Y
是 Python 解释器的主版本号和次版本号。可以通过将 PYTHONDOCS
环境变量设置为不同的 URL 或包含库参考手册页面的本地目录来覆盖此设置。
在 3.2 版本中更改: 添加了 -b
选项。
在 3.3 版本中更改: 删除了 -g
命令行选项。
在 3.4 版本中更改: pydoc
现在使用 inspect.signature()
而不是 inspect.getfullargspec()
来从可调用对象中提取签名信息。
在 3.7 版本中更改: 添加了 -n
选项。