pydoc --- 文檔生成器和在線(xiàn)幫助系統?

源代碼: Lib/pydoc.py


pydoc 模塊會(huì )根據 Python 模塊來(lái)自動(dòng)生成文檔。 生成的文檔可在控制臺中顯示為文本頁(yè)面,提供給 Web 瀏覽器訪(fǎng)問(wèn)或者保存為 HTML 文件。

對于模塊、類(lèi)、函數和方法,顯示的文檔內容取自文檔字符串(即 __doc__ 屬性),并會(huì )遞歸地從其帶文檔的成員中獲取。 如果沒(méi)有文檔字符串,pydoc 會(huì )嘗試從類(lèi)、函數或方法定義上方,或是模塊頂部的注釋行段落獲取 (參見(jiàn) inspect.getcomments()).

內置函數 help() 會(huì )發(fā)起調用交互式解釋器的在線(xiàn)幫助系統,該系統使用 pydoc 在終端上生成文本形式的文檔內容。 同樣的文本文檔也可以在 Python 解釋器以外通過(guò)在操作系統的命令提示符下以腳本方式運行 pydoc 來(lái)查看。 例如,運行

pydoc sys

在終端提示符下將通過(guò) sys 模塊顯示文檔內容,其樣式類(lèi)似于 Unix man 命令所顯示的指南頁(yè)面。 pydoc 的參數可以為函數、模塊、包,或帶點(diǎn)號的對模塊中的類(lèi)、方法或函數以及包中的模塊的引用。 如果傳給 pydoc 的參數像是一個(gè)路徑(即包含所在操作系統的路徑分隔符,例如 Unix 的正斜杠),并且其指向一個(gè)現有的 Python 源文件,則會(huì )為該文件生成文檔內容。

備注

為了找到對象及其文檔內容,pydoc 會(huì )導入文檔所在的模塊。 因此,任何模塊層級的代碼都將被執行。 請使用 if __name__ == '__main__': 語(yǔ)句來(lái)確保一個(gè)文件的特定代碼僅在作為腳本被發(fā)起調用時(shí)執行而不是在被導入時(shí)執行。

當打印輸出到控制臺時(shí),pydoc 會(huì )嘗試對輸出進(jìn)行分頁(yè)以方便閱讀。 如果設置了 PAGER 環(huán)境變量,pydoc 將使用該變量值作為分頁(yè)程序。

在參數前指定 -w 旗標將把 HTML 文檔寫(xiě)入到當前目錄下的一個(gè)文件中,而不是在控制臺中顯示文本。

在參數前指定 -k 旗標將在全部可用模塊的提要行中搜索參數所給定的關(guān)鍵字,具體方式同樣類(lèi)似于 Unix man 命令。 模塊的提要行就是其文檔字符串的第一行。

你還可以使用 pydoc 在本機上啟動(dòng)一個(gè) HTTP 服務(wù)器并向來(lái)訪(fǎng)的 Web 瀏覽器展示文檔。 pydoc -p 1234 將在 1234 端口上啟動(dòng) HTTP 服務(wù)器,允許在你使用 Web 瀏覽器通過(guò) http://localhost:1234/ 來(lái)瀏覽文檔內容。 指定 0 作為端口號將任意選擇一個(gè)未使用的端口。

pydoc -n <hostname> 將啟動(dòng)在給定主機名上執行監聽(tīng)的服務(wù)。 默認主機名為 'localhost' 但如果你希望能從其他機器搜索該服務(wù)器,你可能會(huì )想要改變服務(wù)器所響應的主機名。 在開(kāi)發(fā)階段此特性會(huì )特別有用,因為這樣你將能在一個(gè)容器中運行 pydoc。

pydoc -b 將啟動(dòng)服務(wù)并額外打開(kāi)一個(gè) Web 瀏覽器訪(fǎng)問(wèn)模塊索引頁(yè)。 所發(fā)布的每個(gè)頁(yè)面頂端都帶有導航欄,你可以點(diǎn)擊 Get 獲取特定條目的幫助,點(diǎn)擊 Search 在所有模塊的提要行中搜索特定關(guān)鍵詞,或是點(diǎn)擊 Module index, TopicsKeywords 前往相應的頁(yè)面。

pydoc 生成文檔內容時(shí),它會(huì )使用當前環(huán)境和路徑來(lái)定位模塊。 因此,發(fā)起調用 pydoc spam 得到的文檔版本會(huì )與你啟動(dòng) Python 解釋器并輸入 import spam 時(shí)得到的模塊版本完全相同。

核心模塊的模塊文檔位置對應于 https://docs.python.org/X.Y/library/ 其中 XY 是 Python 解釋器的主要版本號和小版本號。 這可通過(guò)設置 PYTHONDOCS 環(huán)境變量來(lái)重載為指向不同的 URL 或包含 Library Reference Manual 頁(yè)面的本地目錄。

在 3.2 版更改: 添加 -b 選項。

在 3.3 版更改: 命令行選項 -g 已經(jīng)移除。

在 3.4 版更改: pydoc 現在會(huì )使用 inspect.signature() 而非 inspect.getfullargspec() 來(lái)從可調用對象中提取簽名信息。

在 3.7 版更改: 添加 -n 選項。