pydoc — 文档生成器和在线帮助系统

源代码: Lib/pydoc.py


pydoc 模块自动从 Python 模块生成文档。文档可以作为控制台上的文本页面呈现,提供给 Web 浏览器,或保存到 HTML 文件中。

对于模块、类、函数和方法,显示的文档源自对象的文档字符串(即 __doc__ 属性),以及可文档化成员的递归。如果没有文档字符串,pydoc 会尝试从源文件中类、函数或方法定义正上方或模块顶部的注释行块获取描述(请参见 inspect.getcomments())。

内置函数 help() 在交互式解释器中调用在线帮助系统,该系统使用 pydoc 以文本形式在控制台上生成其文档。也可以通过在操作系统命令提示符下以脚本形式运行 pydoc 来从 Python 解释器外部查看相同的文本文档。例如,运行

python -m pydoc sys

将在 shell 提示符下显示有关 sys 模块的文档,其样式类似于 Unix man 命令显示的手册页。传递给 pydoc 的参数可以是函数、模块或包的名称,或者是对模块或包中模块中的类、方法或函数的点分引用。如果传递给 pydoc 的参数看起来像路径(即它包含操作系统的路径分隔符,例如 Unix 中的斜杠),并且引用现有的 Python 源文件,那么将为该文件生成文档。

注意

为了查找对象及其文档,pydoc 导入要记录的模块。因此,模块级别的任何代码都将在该场合执行。使用 if __name__ == '__main__': 保护,仅当文件作为脚本调用而不是仅仅导入时才执行代码。

当将输出打印到控制台时,pydoc 会尝试对输出进行分页,以便更轻松地阅读。如果 PAGER 环境变量已设置,pydoc 将使用其值作为分页程序。

在参数前指定 -w 标志将导致将 HTML 文档写入当前目录中的一个文件,而不是在控制台上显示文本。

在参数前指定 -k 标志将在所有可用模块的概要行中搜索作为参数给出的关键字,类似于 Unix man 命令。模块的概要行是其文档字符串的第一行。

您还可以使用 pydoc 在本地计算机上启动 HTTP 服务器,该服务器将为访问的 Web 浏览器提供文档。 python -m pydoc -p 1234 将在端口 1234 上启动 HTTP 服务器,允许您在首选的 Web 浏览器中浏览 http://localhost: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/,其中 XY 是 Python 解释器的主要版本号和次要版本号。可以通过将 PYTHONDOCS 环境变量设置为不同的 URL 或包含库参考手册页面的本地目录来覆盖此设置。

在 3.2 版本中更改: 添加 -b 选项。

在 3.3 版本中更改: 删除 -g 命令行选项。

在 3.4 版本中更改: pydoc 现在使用 inspect.signature() 而不是 inspect.getfullargspec() 从可调用对象中提取签名信息。

在 3.7 版本中更改: 添加 -n 选项。