添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首发于 Test In Life!

Python Inspect模块

inspect:

1.对类,模块的操作,成员,类,模块类型的判断

2.获取源码

3.获取类或函数的参数信息

4.解析堆栈

function

inspect.signature(obj, *, follow_wrapped=True)
    return signature类型的对象,值为函数的所有参数
inspect.signature(fun).parameters
    return orderdict key就是参数名  str类型
inspect.getmembers(module)
    return module的所有成员的name和obj类型
inspect.isclass(obj)
    return boolean判断一个对象是否是类

示例代码:

import inspect
def a(a, b=0, *c, d, e=1, **f):
aa = inspect.signature(a)
print("inspect.signature(fn)是{0}".format(aa))
print("inspect.signature(fn)的类型是{0}".format(type(aa)))
bb = aa.parameters
print("signature.parameters属性是{0}".format(bb))
print("signature.parameters属性的类型是{0}".format(type(bb)))
for cc, dd in bb.items():
    print("mappingproxy.items()返回的值分别是{0}{1}".format(cc, dd))
    print("mappingproxy.items()返回的值类型分别是{0}{1}".format(type(cc), type(dd)))
ee = dd.kind
print("parameter.kind属性是{0}".format(ee))
print("parameter.kind属性类型是{0}".format(type(ee)))
gg = dd.default
print("parameter.default属性是{0}".format(gg))
print("parameter.default属性类型是{0}".format(type(gg)))
ff = inspect.Parameter.KEYWORD_ONLY
print("inspect.Parameter.KEYWORD_ONLY属性是{0}".format(ff))
print("inspect.Parameter.KEYWORD_ONLY属性类型是{0}".format(type(ff)))

示例代码:

import inspect
for name, obj in inspect.getmembers(unittest):
    """获取该模块的所有类"""
    if inspect.isclass(obj):
        print(obj.__name__)

获取某个类中的函数:

    for i in inspect.getmembers(Page):  #获取Page类中的所有成员方法,i返回的是一个元祖,第一个元素是方法名,第二个是内存地址
        if inspect.isfunction(i[1]):  #判断成员是不是一个函数方法
            print(i[1].__doc__)  #是打印他的doc
"""下面可以写出带序号的方法"""
  driver = []