Python 的内置模块inspect
🤖 Assistant
inspect 库是 Python 的内置模块,主要用于[获取关于活动对象(如模块、类、方法、函数、回溯、帧对象和代码对象)的信息]。下面是 inspect 库中列出的部分方法的介绍:
核心自省功能:
signature(obj):返回一个Signature对象,它[表示给定可调用对象(如函数、方法、类)的调用签名及其返回值标注]。这是inspect模块中一个非常重要的功能,用于[获取函数的参数信息,包括参数名、默认值、类型提示等]。Parameter(name, kind, *, default=Parameter.empty, annotation=Parameter.empty):这个方法用于[创建表示函数参数的对象]。它允许你[构建或修改函数的参数列表],比如在装饰器中动态改变函数的签名。currentframe():返回当前堆栈帧对象。getargspec(func):获取 Python 函数的参数名称和默认值。注意:在 Python 3 中,getfullargspec()是更推荐使用的替代方法。getfullargspec(func):获取 Python 函数的参数名称、默认值、关键字参数字典的名称以及仅限位置参数。这比getargspec()提供更全面的信息。getmembers(object, predicate=None):返回一个包含对象所有成员(属性)(name, value)元组的列表。getdoc(object):获取对象的文档字符串(docstring),并对其进行清理。getfile(object):返回对象的源文件(如果可用)。getsource(object):返回对象的源代码字符串(如果可用)。getmodule(object):返回定义对象的模块。getmodulename(path):从文件路径中提取模块名。
类型检查功能:
isfunction(object):检查对象是否为 Python 函数。ismethod(object):检查对象是否为绑定方法。isclass(object):检查对象是否为类。ismodule(object):检查对象是否为模块。isbuiltin(object):检查对象是否为内置函数或方法。isroutine(object):检查对象是否为函数或方法(包括内置函数和方法)。isgenerator(object):检查对象是否为生成器迭代器。isgeneratorfunction(object):检查对象是否为生成器函数。iscoroutine(object):检查对象是否为协程对象。iscoroutinefunction(object):检查对象是否为协程函数。isasyncgen(object):检查对象是否为异步生成器迭代器。isasyncgenfunction(object):检查对象是否为异步生成器函数。isabstract(object):检查对象是否为抽象基类或含有抽象方法的类。isawaitable(object):检查对象是否可以通过await操作符使用。
堆栈和帧相关:
stack():返回调用者堆栈中帧记录的列表。trace():返回当前执行帧的回溯对象。getframeinfo(frame, context=1):从帧或回溯中获取有关文件、行号和函数的信息。getouterframes(frame, context=1):获取由帧或回溯代表的函数的外部调用者堆栈帧列表。getinnerframes(traceback, context=1):获取由帧或回溯代表的函数的内部被调用者堆栈帧列表。getlineno(object):获取对象的行号(如果定义在文件中)。
其他辅助功能:
cleandoc(doc):清除文档字符串中的缩进。findsource(object):尝试查找对象的源文件和行号。getcomments(object):获取对象定义前的注释行。unwrap(wrapped, *, stop=None):解开一个包装器链,返回最基础的原始对象。classify_class_attrs(cls):将类的属性分类为不同的类型,如数据、方法、类方法等。get_annotations(obj, *, eval_str=False):获取对象的注解字典。formatannotation(annotation):格式化类型注解使其可读。
与模块相关的内部/辅助属性(通常不直接作为公共方法调用):
abc,ast,attrgetter,builtins,collections,dis,enum,functools,importlib,itertools,k,linecache,mod_dict,modulesbyfile,namedtuple,os,re,sys,token,tokenize,types,v,walktree,warnings:这些通常是inspect模块内部使用的其他模块或对象的引用,或者是一些内部变量,而不是可以直接调用的公共方法。例如enum模块被某些库(如sqlalchemy)用来定义枚举类型。
浙公网安备 33010602011771号