學習python時遇到了inspect模組的使用,不甚了解,在此簡要的認識一下。
inspect模組主要提供了四種用處:
對是否是模組,框架,函式等進行型別檢查。
獲取原始碼
獲取類或函式的引數資訊
解析堆疊
這裡我不詳細的敘述這四種用法,噹噹講一下如何使用inspect獲取類或函式的引數資訊。還是通過**進行說明。
import inspect
def test(a=0,b='hello',c=[1,2,3],d=):
pass
params=inspect.signature(test).parameters
print('params的型別: ',type(params))
print('params的值: ',params)
for name,param in params.items():
print('引數的名字:',name)
print('引數的值:',param)
print('param.kind的值 ', param.kind)
print('param.kind的型別 ',type(param.kind))
print('param.default的值 ',param.default)
print('param.default的型別 ',type(param.default))
執行結果為:
>), ('c', ), ('d', param.default的值 0
param.default的型別 引數的名字: b
引數的值: b='hello'
param.kind的值 positional_or_keyword
param.kind的型別 param.default的值 hello
param.default的型別 引數的名字: c
引數的值: c=[1, 2, 3]
param.kind的值 positional_or_keyword
param.kind的型別 param.default的值 [1, 2, 3]
param.default的型別 引數的名字: d
引數的值: d=
param.kind的值 positional_or_keyword
param.kind的型別 param.default的值
param.default的型別
inspect.signature(test)為提取test函式的簽名;inspect.signature(test).parameters為獲取test的引數資訊。
inspect.parameter物件的kind屬性是乙個_parameterkind列舉型別的物件,一共有五種,positional_only、var_positional、keyword_only、var_keyword、positional_or_keyword,分別代表著位置引數、可變引數、命名關鍵字引數、關鍵字引數,位置引數或命名關鍵字引數。
inspect.parameter物件的default屬性將返回引數的預設值,如果沒有,返回乙個inspect._empty類。
python學習 型別註解,inspect模組
函式定義的弊端 python是動態語言,變數隨時可以被賦值,且能賦值為不同的型別 python不是靜態編譯型語言,變數型別是在執行期決定的 動態語言很靈活,但是這種特性也是弊端 函式註解 python3.5引入 對函式的引數進行型別註解 對函式的返回值進行型別註解 只對函式引數做乙個輔助的說明,並不...
python 反射 自省 inspect
自省 自省。正如你所知道的,自省是指 可以檢視記憶體中以物件形式存在的其它模組和函式,獲取它們的資訊,並對它們進行操作。用這種方法,你可以定義沒有名稱的函式,不按函式宣告的引數順序呼叫函式,甚至引用事先並不知道名稱的函式。反射有時候我們會碰到這樣的需求,需要執行物件的某個方法,或是需要對物件的某個字...
Python中ConfigParser模組的使用
簡略介紹 configparser模組是用來處理配置檔案的。將配置項專門放到乙個配置檔案裡是個好習慣,用configparser模組可以很方便地對配置檔案進行修改。相應的,配置檔案也要遵循乙個標準格式。configparser有read 方法,用於讀取配置檔案,sections 方法,用於獲取所有小...