日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

inspect python_python之inspect模块

發(fā)布時間:2023/12/15 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 inspect python_python之inspect模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

inspect模塊主要提供了四種用處:

1.對是否是模塊、框架、函數(shù)進行類型檢查

2.獲取源碼

3.獲取類或者函數(shù)的參數(shù)信息

4.解析堆棧

一、type and members

1. inspect.getmembers(object[, predicate])

第二個參數(shù)通常可以根據(jù)需要調(diào)用如下16個方法;

返回值為object的所有成員,以(name,value)對組成的列表

inspect.ismodule(object): 是否為模塊

inspect.isclass(object):是否為類

inspect.ismethod(object):是否為方法(bound method written in python)

inspect.isfunction(object):是否為函數(shù)(python function, including lambda expression)

inspect.isgeneratorfunction(object):是否為python生成器函數(shù)

inspect.isgenerator(object):是否為生成器

inspect.istraceback(object): 是否為traceback

inspect.isframe(object):是否為frame

inspect.iscode(object):是否為code

inspect.isbuiltin(object):是否為built-in函數(shù)或built-in方法

inspect.isroutine(object):是否為用戶自定義或者built-in函數(shù)或方法

inspect.isabstract(object):是否為抽象基類

inspect.ismethoddescriptor(object):是否為方法標識符

inspect.isdatadescriptor(object):是否為數(shù)字標識符,數(shù)字標識符有__get__ 和__set__屬性; 通常也有__name__和__doc__屬性

inspect.isgetsetdescriptor(object):是否為getset descriptor

inspect.ismemberdescriptor(object):是否為member descriptor

inspect的getmembers()方法可以獲取對象(module、class、method等)的如下屬性:

TypeAttributeDescriptionNotes

module

__doc__

documentation string

__file__

filename (missing for built-in modules)

class

__doc__

documentation string

__module__

name of module in which this class was defined

method

__doc__

documentation string

__name__

name with which this method was defined

im_class

class object that asked for this method

(1)

im_func or __func__

function object containing implementation of method

im_self or __self__

instance to which this method is bound, or None

function

__doc__

documentation string

__name__

name with which this function was defined

func_code

code object containing compiled function bytecode

func_defaults

tuple of any default values for arguments

func_doc

(same as __doc__)

func_globals

global namespace in which this function was defined

func_name

(same as __name__)

generator

__iter__

defined to support iteration over container

close

raises new GeneratorExit exception inside the generator to terminate the iteration

gi_code

code object

gi_frame

frame object or possibly None once the generator has been exhausted

gi_running

set to 1 when generator is executing, 0 otherwise

next

return the next item from the container

send

resumes the generator and “sends” a value that becomes the result of the current yield-expression

throw

used to raise an exception inside the generator

traceback

tb_frame

frame object at this level

tb_lasti

index of last attempted instruction in bytecode

tb_lineno

current line number in Python source code

tb_next

next inner traceback object (called by this level)

frame

f_back

next outer frame object (this frame’s caller)

f_builtins

builtins namespace seen by this frame

f_code

code object being executed in this frame

f_exc_traceback

traceback if raised in this frame, or None

f_exc_type

exception type if raised in this frame, or None

f_exc_value

exception value if raised in this frame, or None

f_globals

global namespace seen by this frame

f_lasti

index of last attempted instruction in bytecode

f_lineno

current line number in Python source code

f_locals

local namespace seen by this frame

f_restricted

0 or 1 if frame is in restricted execution mode

f_trace

tracing function for this frame, or None

code

co_argcount

number of arguments (not including * or ** args)

co_code

string of raw compiled bytecode

co_consts

tuple of constants used in the bytecode

co_filename

name of file in which this code object was created

co_firstlineno

number of first line in Python source code

co_flags

bitmap: 1=optimized | 2=newlocals | 4=*arg |8=**arg

co_lnotab

encoded mapping of line numbers to bytecode indices

co_name

name with which this code object was defined

co_names

tuple of names of local variables

co_nlocals

number of local variables

co_stacksize

virtual machine stack space required

co_varnames

tuple of names of arguments and local variables

builtin

__doc__

documentation string

__name__

original name of this function or method

__self__

instance to which a method is bound, or None

2. inspect.getmoduleinfo(path): 返回一個命名元組(name, suffix, mode, module_type)

name:模塊名(不包括其所在的package)

suffix:

mode:open()方法的模式,如:'r', 'a'等

module_type: 整數(shù),代表了模塊的類型

3. inspect.getmodulename(path):根據(jù)path返回模塊名(不包括其所在的package)

二、Retrieving source code

1. inspect.getdoc(object): 獲取object的documentation信息

2. inspect.getcomments(object)

3. inspect.getfile(object): 返回對象的文件名

4. inspect.getmodule(object):返回object所屬的模塊名

5. inspect.getsourcefile(object): 返回object的python源文件名;object不能使built-in的module, class, mothod

6. inspect.getsourcelines(object):返回object的python源文件代碼的內(nèi)容,行號+代碼行

7. inspect.getsource(object):以string形式返回object的源代碼

8. inspect.cleandoc(doc):

三、class and functions

1. inspect.getclasstree(classes[, unique])

2. inspect.getargspec(func)

3. inspect.getargvalues(frame)

4. inspect.formatargspec(args[, varargs, varkw, defaults, formatarg, formatvarargs, formatvarkw, formatvalue, join])

5. inspect.formatargvalues(args[, varargs, varkw, locals, formatarg, formatvarargs, formatvarkw, formatvalue, join])

6. inspect.getmro(cls): 元組形式返回cls類的基類(包括cls類),以method resolution順序;通常cls類為元素的第一個元素

7. inspect.getcallargs(func[, *args][, **kwds]):將args和kwds參數(shù)到綁定到為func的參數(shù)名;對bound方法,也綁定第一個參數(shù)(通常為self)到相應(yīng)的實例;返回字典,對應(yīng)參數(shù)名及其值;

>>> from inspect import getcallargs

>>> def f(a, b=1, *pos, **named):

... pass

>>> getcallargs(f, 1, 2, 3)

{'a': 1, 'named': {}, 'b': 2, 'pos': (3,)}

>>> getcallargs(f, a=2, x=4)

{'a': 2, 'named': {'x': 4}, 'b': 1, 'pos': ()}

>>> getcallargs(f)

Traceback (most recent call last):

...

TypeError: f() takes at least 1 argument (0 given)

四、The interpreter stack

1. inspect.getframeinfo(frame[, context])

2. inspect.getouterframes(frame[, context])

3. inspect.getinnerframes(traceback[, context])

4. inspect.currentframe()

5. inspect.stack([context])

6. inspect.trace([context])

總結(jié)

以上是生活随笔為你收集整理的inspect python_python之inspect模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。