麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > python之使用inspect模塊

python之使用inspect模塊

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-07 17:53:10 1699350790

inspect模塊提供了一系列函數(shù)用于幫助使用自省。下面僅列出較常用的一些函數(shù),想獲得全部的函數(shù)資料可以查看inspect模塊的文檔。

1.檢查對(duì)象類型

is{module|class|function|method|builtin}(obj):

檢查對(duì)象是否為模塊、類、函數(shù)、方法、內(nèi)建函數(shù)或方法。

isroutine(obj):

用于檢查對(duì)象是否為函數(shù)、方法、內(nèi)建函數(shù)或方法等等可調(diào)用類型。用這個(gè)方法會(huì)比多個(gè)is*()更方便,不過它的實(shí)現(xiàn)仍然是用了多個(gè)is*()。

im=cat.sayHi

ifinspect.isroutine(im):

im()

對(duì)于實(shí)現(xiàn)了__call__的類實(shí)例,這個(gè)方法會(huì)返回False。如果目的是只要可以直接調(diào)用就需要是True的話,不妨使用isinstance(obj,collections.Callable)這種形式。我也不知道為什么Callable會(huì)在collections模塊中,抱歉!我猜大概是因?yàn)閏ollections模塊中包含了很多其他的ABC(AbstractBaseClass)的緣故吧:)

2.獲取對(duì)象信息

getmembers(object[,predicate]):

這個(gè)方法是dir()的擴(kuò)展版,它會(huì)將dir()找到的名字對(duì)應(yīng)的屬性一并返回,形如[(name,value),...]。另外,predicate是一個(gè)方法的引用,如果指定,則應(yīng)當(dāng)接受value作為參數(shù)并返回一個(gè)布爾值,如果為False,相應(yīng)的屬性將不會(huì)返回。使用is*作為第二個(gè)參數(shù)可以過濾出指定類型的屬性。

getmodule(object):

還在為第2節(jié)中的__module__屬性只返回字符串而遺憾嗎?這個(gè)方法一定可以滿足你,它返回object的定義所在的模塊對(duì)象。

get{file|sourcefile}(object):

獲取object的定義所在的模塊的文件名|源代碼文件名(如果沒有則返回None)。用于內(nèi)建的對(duì)象(內(nèi)建模塊、類、函數(shù)、方法)上時(shí)會(huì)拋出TypeError異常。

get{source|sourcelines}(object):

獲取object的定義的源代碼,以字符串|字符串列表返回。代碼無法訪問時(shí)會(huì)拋出IOError異常。只能用于module/class/function/method/code/frame/traceack對(duì)象。

getargspec(func):

僅用于方法,獲取方法聲明的參數(shù),返回元組,分別是(普通參數(shù)名的列表,*參數(shù)名,**參數(shù)名,默認(rèn)值元組)。如果沒有值,將是空列表和3個(gè)None。如果是2.6以上版本,將返回一個(gè)命名元組(NamedTuple),即除了索引外還可以使用屬性名訪問元組中的元素。

defadd(x,y=1,*z):

returnx+y+sum(z)

printinspect.getargspec(add)

#ArgSpec(args=['x','y'],varargs='z',keywords=None,defaults=(1,))

getargvalues(frame):

僅用于棧幀,獲取棧幀中保存的該次函數(shù)調(diào)用的參數(shù)值,返回元組,分別是(普通參數(shù)名的列表,*參數(shù)名,**參數(shù)名,幀的locals())。如果是2.6以上版本,將返回一個(gè)命名元組(NamedTuple),即除了索引外還可以使用屬性名訪問元組中的元素。

defadd(x,y=1,*z):

printinspect.getargvalues(inspect.currentframe())

returnx+y+sum(z)

add(2)

#ArgInfo(args=['x','y'],varargs='z',keywords=None,locals={'y':1,'x':2,'z':()})

getcallargs(func[,*args][,**kwds]):

返回使用args和kwds調(diào)用該方法時(shí)各參數(shù)對(duì)應(yīng)的值的字典。這個(gè)方法僅在2.7版本中才有。

getmro(cls):

返回一個(gè)類型元組,查找類屬性時(shí)按照這個(gè)元組中的順序。如果是新式類,與cls.__mro__結(jié)果一樣。但舊式類沒有__mro__這個(gè)屬性,直接使用這個(gè)屬性會(huì)報(bào)異常,所以這個(gè)方法還是有它的價(jià)值的。

printinspect.getmro(Cat)

#(,)

printCat.__mro__

#(,)

classDog:pass

printinspect.getmro(Dog)

#(,)

printDog.__mro__#AttributeError

currentframe():

返回當(dāng)前的棧幀對(duì)象。

以上內(nèi)容為大家介紹了python之使用inspect模塊,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
主站蜘蛛池模板: 男孩子和男孩子在一起do| 色播成人网| 宅男影院在线观看| 欧美怡红院免费全部视频| 啊灬啊别停灬用力啊动视频| 美女pk精子| h视频免费观看| 亚洲免费网址| 国产剧情丝袜在线观看| 冠希与阿娇实干13分钟视频| 久久精品国产99精品国产2021| 在线播放真实国产乱子伦| 国产亚洲美女精品久久久2020| 在线观看免费视频一区| 被夫上司强迫的女人在线中文| 欧美性bbbbbxxxxxxx| 在线看无码的免费网站| 啊灬啊别停灬用力啊呻吟| 岛国片在线播放| 大胸年轻的搜子4理论| 日本动漫黄观看免费网站| 午夜国产在线视频| 波多野结衣女教师在线观看| 伦理h动漫| 真实处破疼哭视频免费看| 99综合久久| 福利久草| 女人双腿搬开让男人桶| 亚洲国产高清美女在线观看| 国产黄色一级毛片| 无人区免费高清在线观看| 好男人资源在线www免费| 日韩大片在线| 两根硕大一起挤进小h| 欧美精品黑人巨大在线播放| 青青草国产精品欧美成人| 欧美成人免费观看| 又黄又爽又猛的视频免费| 在线看福利影| avtt在线播放| 男生吃女生的jiojio|