Python??inspect?模塊的簡單使用及常用方法
Python中的inspect模塊解析
Python的inspect
模塊是一個強大的內(nèi)省工具,允許開發(fā)者檢查(inspect)活動對象和源代碼。它提供了一系列函數(shù),用于獲取信息關(guān)于正在運行的程序和調(diào)用堆棧,非常適合進行調(diào)試和動態(tài)分析。本文將通過介紹inspect
模塊的關(guān)鍵功能,并結(jié)合實際案例代碼,來探索其在日常開發(fā)中的應(yīng)用。
常用方法
1. 獲取當前執(zhí)行的函數(shù)或方法名、文件路徑【并不是調(diào)用方】
在日志記錄或調(diào)試時,知道當前執(zhí)行的函數(shù)名是非常有用的
import inspect def who_am_i(): # 輸出當前文件絕對路徑 print(inspect.currentframe().f_code.co_filename) return inspect.currentframe().f_code.co_name print(who_am_i()) # 輸出: who_am_i
個人認為比較有用的就是 co_filename、co_name
2. 獲取調(diào)用者信息
獲取當前函數(shù)或方法的調(diào)用者信息
import inspect def caller_info(): frame = inspect.currentframe().f_back print(f調(diào)用者 {frame.f_code.co_filename} 調(diào)用行號 d{frame.f_lineno}") def test(): caller_info() # 調(diào)用以獲取調(diào)用者信息 test()
這個例子顯示了如何獲取調(diào)用當前函數(shù)的代碼位置,非常有助于調(diào)試復雜的調(diào)用鏈
3. 查看函數(shù)參數(shù)
inspect
模塊可以用來檢查函數(shù)或方法的參數(shù),這對于動態(tài)分析和生成文檔非常有用
import inspect def sample_function(name, age=25): pass sig = inspect.signature(sample_function) print(sig) # 輸出: (name, age=25)
4. 獲取源代碼
inspect
還可以用來獲取函數(shù)、類或模塊的源代碼
import inspect def my_function(): """A simple function.""" pass print(inspect.getsource(my_function))
5. 檢查類和實例
inspect
模塊提供了多種方式來檢查類和實例,比如獲取類的所有方法、屬性等
class MyClass: def method_one(self): pass def method_two(self): pass # 獲取類的所有成員方法 methods = inspect.getmembers(MyClass, predicate=inspect.isfunction) print(methods) # 輸出 MyClass 中定義的方法
實際案例:自動化場景下的應(yīng)用
一個常見的使用場景是動態(tài)地調(diào)用函數(shù)或方法,并基于它們的簽名自動生成文檔。
def test(): # 獲取調(diào)用方 frame = inspect.currentframe().f_back # 獲取調(diào)用方文件絕對路徑 caller_file = inspect.getfile(frame) # 這種方式也可以 caller_file = frame.f_code.co_filename ... params = [ caller_file, "--env-data", env_data.json(), f"--count={count}", "-m", mark, ]
一個基于 Pytest 自動化測試項目
- 每個 py 模塊都會調(diào)用這個方法來執(zhí)行 Pytest 命令來跑測試用例
- 那怎么才能準確知道要跑哪個文件呢?
- 通過第一、二行代碼即可
到此這篇關(guān)于Python - inspect 模塊的簡單使用的文章就介紹到這了,更多相關(guān)Python inspect 模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用xpath對解析內(nèi)容進行數(shù)據(jù)提取
XPath 使用路徑表達式來選取HTML/ XML 文檔中的節(jié)點或節(jié)點集,節(jié)點是通過沿著路徑 (path) 或者步 (steps) 來選取的,本文將給大家介紹Python使用xpath對解析內(nèi)容進行數(shù)據(jù)提取的方法,需要的朋友可以參考下2024-05-05使用anaconda安裝pytorch的實現(xiàn)步驟
這篇文章主要介紹了使用anaconda安裝pytorch的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09Python 迭代,for...in遍歷,迭代原理與應(yīng)用示例
這篇文章主要介紹了Python 迭代,for...in遍歷,迭代原理與應(yīng)用,結(jié)合實例形式分析了Python迭代與遍歷的相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下2019-10-10Python如何基于selenium實現(xiàn)自動登錄博客園
這篇文章主要介紹了Python如何基于selenium實現(xiàn)自動登錄博客園,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12