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, enumfunctools, importlib, itertools, k, linecache, mod_dict, modulesbyfile, namedtuple, os, re, sys, token, tokenize, types, v, walktree, warnings:这些通常是 inspect 模块内部使用的其他模块或对象的引用,或者是一些内部变量,而不是可以直接调用的公共方法。例如 enum 模块被某些库(如 sqlalchemy)用来定义枚举类型。

posted on 2025-08-25 01:44  痴心妄想  阅读(12)  评论(0)    收藏  举报

导航