利用Inspect模塊查看python對象源代碼

前排@一付湘江滿天香 @aoxuely
很多時候,我們在別人的代碼中發現了一些對象(比如類和函數),這個時候,如果我們想查看該對象的具體實現方式,我們可以找到對應的import,然後一級一級查找其import的內容,最終找到其對應的源代碼,沒錯,一直以來我就是這麼幹的。但是在一些情況下你看不到對應的import,比如我們想查看pychram的python console運行時的runfile函數,用這種方法找不到它的源代碼。我們只能使用help查看對象內置的幫助文檔,這樣得到的信息非常有限。
在這裏插入圖片描述
直到今天我看到了inspect這個函數庫

這個庫很簡單,安裝好python直接就內置好了,我們打開IDLE,按F1調出文檔後直接搜索inspect
在這裏插入圖片描述
可以看到的是,inspect這個模塊可以實現類型檢查,獲取源代碼,檢查類和函數,以及檢查解釋器堆棧等等,具體其他的可以進一步去探索,我們目前需要的是其獲取源代碼的功能。如果想進階,我們還可以在python安裝目錄找到inspect函數或者直接使用這個模塊,獲取它自身的實現方式。
廢話不多說,上例子

import inspect as ist
a = ist.getsource(runfile)
type(a)
print(a)

在這裏插入圖片描述
使用inspect模塊的getsource方法,可以得到一個對象的實現返回,這個返回值的類型爲str,保存的便是對象的實現代碼。我們可以進一步對其進行需要的處理,比如保存到文件等等。
當然,使用這個方法獲取源代碼的前提,是必須要將對象導入到運行環境中,這在idle和pychram的python console中還是比較實用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章