当前位置: 首页 > news >正文

python: inspect模块各函数的用法

python: inspect模块各函数的用法

inspect模块也被称为 检查现场对象。这里的重点在于“现场”二字,也就是当前运行的状态。
inspect模块提供了一些函数来了解现场对象,包括 模块、类、实例、函数和方法。
inspect函数主要用于以下四个方面

  • 对是否是模块、框架、函数进行类型检查
  • 获取源码包
  • 获取类或者函数的参数信息
  • 解析堆栈

一、inspect模块总览

1、获取成员与判断

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

第二个参数通常可以根据需要调用如下16个方法;

返回值为object的所有成员,以(name,value)对组成的列表

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

  1. inspect.getmoduleinfo(path): 返回一个命名元组(name, suffix, mode, module_type)

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

  suffix:mode:open()方法的模式,如:'r', 'a'等module_type: 整数,代表了模块的类型
  1. inspect.getmodulename(path):根据path返回模块名(不包括其所在的package)

2、获取源代码

  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源文件代码的内容,行号+代码行

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

3、类与函数

  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参数到绑定到为func的参数名;对bound方法,也绑定第一个参数(通常为self)到相应的实例;返回字典,对应参数名及其值;

4、调用栈

  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])

http://www.lryc.cn/news/317035.html

相关文章:

  • 优化代码性能:C#中轻松测量执行时间
  • I2C学习总结
  • libcudart.so libcuda.so之间的关系
  • STM32基本定时功能
  • Linux学习:权限
  • 汉诺塔问题代码写法的详细解析
  • Python爬虫入门
  • 【数据结构学习笔记】选择排序
  • 小资金适合做伦敦金的投资吗?
  • 自动化运维工具 ---------------Ansible
  • 富格林:有效做单安全盈利方法
  • 二分查找的理解及应用场景。
  • 共创时代,品牌如何做好UGC营销?
  • 华为三层交换机:ACL的基本实验
  • 基于springboot+vue的旅游管理系统
  • 4. git 添加版本标签
  • 2024 PhpStorm激活,分享几个PhpStorm激活的方案
  • 2419. prufer序列(prufer编码,模板题)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Text)
  • 开源大数据集群部署(十五)Zookeeper集群部署
  • 服务器镜像是什么
  • JWT原理
  • 操作系统:一款纯正的“管理”软件
  • Mac笔记本聚焦SpotLight占用内存太高的 解法
  • C++中.h和.hpp文件有什么区别?
  • MongoDB聚合运算符:$derivative
  • 面试官:如果你现在有20个Spring Boot微服务,如何监视所有这些Spring Boot微服务?
  • 冯诺依曼模型
  • 高低拖延个体的任务决策及执行差异
  • 数据分析Pandas专栏---第十三章<Pandas训练题(初)>