python inspect模块

inspect模块主要提供了四种用处:

1.对是否是模块、框架、函数进行类型检查

2.获取源码

3.获取类或者函数的参数信息

4.解析堆栈

一、type and members

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

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

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

inspect的getmembers()方法可以获取对象(module、class、method等)的如下属性:

  1. inspect.getmoduleinfo(path): 返回一个命名元组

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

suffix:

mode:open()方法的模式,如:’r’, ‘a’等

module_type: 整数,代表了模块的类型

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

Original: https://www.cnblogs.com/linwenbin/p/15365668.html
Author: 志不坚者智不达
Title: python inspect模块

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10831/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总