在Python解釋器上運行help(list)的輸出。
幫助功能實際上是使用 pydoc 模塊生成其輸出,它也可以從命令行運行,以產(chǎn)生您路徑中任何可導(dǎo)入模塊的文本或 html 表示。
不久以前,我需要編寫更細致,更正式的設(shè)計文檔。而作為一個 Markdown 的粉絲,我決定玩一玩mkdocs,看看是否能獲得我想要的結(jié)果。這個模塊可以很容易地將你的 markdown 文檔轉(zhuǎn)化為一個樣式美觀的頁面,并且,在發(fā)布為官方文檔之前,允許你對其做更改。它提供了一個 readthedocs 模板,深圳還提供了一個簡單的命令行界面,來把你的修改推送到 GitHub Pages 里面。
在完成了我最初的描述設(shè)計決策和注意事項的文本后,我想加上一些細節(jié),描述我正在開發(fā)的實際接口方法。因為我已經(jīng)為大部分的功能寫了定義,我想從源代碼自動生成參考頁面,還希望這個能在 markdown 里面。這樣的話,只要我想跑 mkdocs,它就可以連同我文檔的其余部分,一起渲染成 html。
然而,事實上還沒有一種從源碼生成 markdown 的默認方式,除了一些插件。后來,我不斷在谷歌上查詢,我還是不滿意我發(fā)現(xiàn)的插件——很多東西都過時了,沒有人維護了,或者輸出的東西不是我需要的——因此,我決定寫一個我自己的項目。我認為這很有意思,這也讓我學(xué)到了更多關(guān)于構(gòu)建和調(diào)試一個模塊的知識,更多內(nèi)容可以查看我之前的文章( 設(shè)計一個簡單的圖形 Python 調(diào)試器 ):inspect 模塊。
“inspect 模塊提供了幾個有用的函數(shù)來幫助我們獲取生存著的對象信息... ” — Python 文檔
檢查!
Inspect,源自于標(biāo)準(zhǔn)程序庫,它不僅允許你查看較低級別的 python 框架和代碼對象,它還提供很多方法來檢查模塊和類,幫你發(fā)現(xiàn)可能感興趣的的項目。這個也就是之前提到的用來生成幫助文件的 pydoc。
瀏覽一下在線文檔,你會發(fā)現(xiàn)許多跟我們所做的嘗試相關(guān)的方法。最重要的幾個是getmembers(),getdoc() 和 signature(),還有許多給 getmembers 做濾波器的 is... 功能。擁有這些,我們可以輕易地循環(huán)訪問很多功能,包括區(qū)分生成器和協(xié)同程序,并可以按需要遞歸到任何一個類以及內(nèi)部。
導(dǎo)入編碼
如果我們要去檢查一個對象,不管它是什么,第一步要做的是提供一個導(dǎo)入進我們的命名空間的原理。為何要討論導(dǎo)入呢?這取決于你想要做什么,還有很多需要擔(dān)心的,包括虛擬環(huán)境,自定義代碼,標(biāo)準(zhǔn)模塊和重命名。情況會容易混淆,搞錯的話會需要一些時間去整理清楚。