目录
一、dir及inspect函数的使用
(一)dir
Python内置函数 dir() 可以查看模块内定义的所有名称、属性,并以字符串列表的形式返回结果。
具体有如下两种形式:
- 当 dir() 不带参数时,返回当前范围内的变量、方法和定义的类型列表;
- 当 dir() 带参数时,返回参数的属性、方法列表。
语法为:
dir([object])
#object泛指具体的对象、变量、类型
例如:
不带参数时,获取当前模块的所有属性列表
带参数时,获取参数的属性、方法列表(以cv2为例)
(二)inspect
inspect 能够帮助用户获取对象的信息,例如模块、类、方法、函数、回溯、帧对象以及代码对象。 该模块提供了4种主要的功能:
- 类型检查
- 获取源代码
- 获取类或者函数的参数信息
- 检查解释器的调用堆栈
以下为inspect模块中常用的查看方法:
1、检查类型和成员
语法为:
import inspect
#导入inspect库
inspect.getmembers(object[, predicate])
#predicate是一个可选的函数参数,被此函数判断为True的成员才被返回
该函数获取对象的成员,例如类或模块。函数名以"is"开始的函数主要作为 getmembers() 的第2个参数使用。主要有如下几类:
inspect.ismodule(object)
#检查是否为模块
inspect.isclass(object)
#检查是否为类
inspect.ismethod(object)
#检查是否为方法(bound method written in python)
inspect.isfunction(object)
#检查是否为函数(python function, including lambda expression)
inspect.isgeneratorfunction(object)
#检查是否为python生成器函数
inspect.isgenerator(object)
#检查是否为生成器
inspect.istraceback(object)
#检查是否为traceback
inspect.isframe(object)
#检查是否为frame
inspect.iscode(object)
#检查是否为code
inspect.isbuiltin(object)
#检查是否为built-in函数或built-in方法
inspect.isroutine(object)
#检查是否为用户自定义或者built-in函数或方法
inspect.isabstract(object)
#检查是否为抽象基类
inspect.ismethoddescriptor(object)
#检查是否为方法标识符
inspect.isdatadescriptor(object)
#检查是否为数字标识符,数字标识符有__get__ 和__set__属性; 通常也有__name__和__doc__属性
inspect.isgetsetdescriptor(object)
#检查是否为getset descriptor
inspect.ismemberdescriptor(object)
#检查是否为member descriptor
2、检索源代码
语法为:
import inspect
#导入inspect库
inspect.getdoc(object)
#获取对象的文档字符串,如果没有则返回None
inspect.getcomments(object)
#以单个字符串的形式返回紧位于对象源代码(用于类、方法或者函数)之前的任何注释行,或者位于Python源文件的顶部(如果对象是个模块)。如果源代码不可用则返回None
inspect.getfile(object)
#返回定义对象的文件路径
inspect.getmodule(object)
#返回对象所属的模块名
inspect.getsourcefile(object)
#返回对