Python中inspect模組的一些認識

2021-09-02 02:01:33 字數 1576 閱讀 5461

學習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 方法,用於獲取所有小...