python inspect

  • type and member
  • Retrieving source code
  • class and functions
  • The interpreter stack

inspect的主要作用

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

type and member

  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

  2. inspect.getmoduleinfo(path): 返回一个命名元组(name, suffix, mode, module_type)
    name:模块名(不包括其所在的package)
    suffix:
    mode:open()方法的模式,如:‘r’, 'a’等
    module_type: 整数,代表了模块的类型

  3. inspect.getmodulename(path):根据path返回模块名(不包括其所在的package)

Retrieving source code

  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的源代码
  8. inspect.cleandoc(doc):

class and functions

  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)到相应的实例;返回字典,对应参数名及其值;

from inspect import getcallargs
def f(a, b=1, *pos, **named):
… pass
getcallargs(f, 1, 2, 3)
{‘a’: 1, ‘named’: {}, ‘b’: 2, ‘pos’: (3,)}
getcallargs(f, a=2, x=4)
{‘a’: 2, ‘named’: {‘x’: 4}, ‘b’: 1, ‘pos’: ()}
getcallargs(f)
Traceback (most recent call last):

TypeError: f() takes at least 1 argument (0 given)

The interpreter stack

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

python模块—inspect相关推荐

  1. python的inspect模块

    发现python有个好用的检查模块-inspect, 查看源文件发现它提供了不少好用的方法: """ Here are some of the useful functi ...

  2. inspect python模块_python常用模块-inspect模块

    #判断模块.框架.类.函数的方法,和type返回的类型是一样的,只是这里是判断 inspect.getmodulename(path) 获取模块名称 inspect.ismodule(object) ...

  3. python 模块 导入机制 模块搜索 Python包 发布python模块或程序

    python 模块 python模块:以.py结尾的代码文件.        顶层文件: 程序执行入口        模块文件1        模块文件2        模块文件3 在python中一 ...

  4. Python模块(自己整理并不完整)

    PY核心模块方法 ******************** os模块: os.remove() 删除文件  os.unlink() 删除文件  os.rename() 重命名文件  os.listdi ...

  5. GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态

    GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...

  6. 在Ubuntu 14.04.5 LTS上安装python模块selenium 3实录

    简介 Selenium是python模块库中一组web自动化测试工具集,提供多种语言的API,例如java,python,ruby,.net等,支持Firefox,Chrome,IE,Safari 等 ...

  7. Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8

    我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...

  8. Python培训教程分享:Python模块如何导入__all__属性?

    本期小编为大家带来的Python培训教程是关于"Python模块如何导入__all__属性?"的内容,后面在工作中是会遇到Python模块这个工作内容的,Python模块的开头通常 ...

  9. 分享3个好用到爆的 Python 模块,点赞收藏

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天给大家介绍3个特别好用的Python模块,知道的人可能不多,但是特别的好用. Psutil Pendulum Pyfiglet Psutil Pyt ...

最新文章

  1. 重置npm设置_密码重置用户流程4部曲
  2. Python高阶函数和函数嵌套
  3. 配置zabbix监控windows,cmd运行报错cannot connect to Service Manager: [0x00000005]
  4. BZOJ 3195: [Jxoi2012]奇怪的道路 | 状压DP
  5. 教师计算机培训心得体会范文,xx年教师计算机培训心得体会范文.doc
  6. ffmpeg 分辨率 压缩_用GPU加速FFmpeg中的超分辨率功能
  7. StringBuilder和Char[]在平台调用中的差异
  8. torch.full 【输出大小为size内容为填充张量为fill_value的张量】
  9. Spring MVC 基础笔记
  10. php三步运算法,小技巧----“三步翻转法”
  11. 用例规约要细致到万无一失吗?
  12. 约瑟夫环C语言递归实现
  13. 如何在word中的图片上画圈标注_word图片上画圈 如何在word图片中进行画圈标示...
  14. [转]阮杰:从散户到身价过亿的私募掌门人
  15. Vue源码阅读(28):mergeOptions() 方法源码解析
  16. 有点甜用计算机怎么谈,有点甜造句
  17. android全渠道浅谈
  18. 阿里云云安全理工程师认证 部分题目 ACA
  19. SDN学习笔记(一)
  20. Word 一件删除所有空格

热门文章

  1. 阿里云 OSS 云存储 文件上传
  2. 知识付费系统微信提示用户信息获取失败
  3. 响应式营销策划文化传媒公司网站模板源码
  4. android 自定义view 高度,自定义View之宽高的设置,全网最详解
  5. 029 高阶导数之sinx(n)、cosx(n)及Leibniz公式
  6. 关于python爬虫(requests)设置http代理的源码demo
  7. 数字金融面板数据:金融效率、数字金融指数、不变价GDP、经济开放度
  8. C语言-啤酒饮料问题
  9. threeJs搭建智慧园区
  10. 搭建实验室3d slam 镭神ch128x1 128线混合固态激光雷达lego-loam建图