inspect模块的使用
一、介绍
inspect模块主要的四种用处:
1.对是否是模块、框架、函数等进行类型检测
2.获取源码
3.获取类或函数的参数信息
4.解析堆栈
二、使用
只写了2个自己用到的方法,方法太用,https://docs.python.org/3/library/inspect.html,可以看官方文档
#获取python函数参数的名称和默认值,返回一个命名的元组
inspect.getfullargspec(func) #返回调用者堆栈的帧记录列表,返回列表中的每一条为调用者,最后一条为堆栈上最外层的调用者
inspect.stack(context=1)
inspect.stack()的结果会随着调用层数的变化而变化
stack=inspect.stack()
print(stack)
#[FrameInfo(frame=<frame object at 0x000001F3A7201C88>,
# filename='D:/PycharmProjects/flask/flask_demo/app.py',
# lineno=34, function='<module>',
# code_context=['stack=inspect.stack()\n'], index=0)] def run():
stack=inspect.stack()
print(stack)
run()
# [FrameInfo(frame=<frame object at 0x0000019BD0706CA8>,
# filename='D:/PycharmProjects/flask/flask_demo/app.py',
# lineno=43, function='run',
# code_context=[' stack=inspect.stack()\n'], index=0),
# FrameInfo(frame=<frame object at 0x0000019BCE31FA48>,
# filename='D:/PycharmProjects/flask/flask_demo/app.py',
# lineno=50, function='<module>', code_context=['run()\n'], index=0)] def person():
def run():
stack=inspect.stack()
print(stack)
return run()
person()
# [FrameInfo(frame=<frame object at 0x0000017020FCE048>, filename='D:/PycharmProjects/flask/flask_demo/app.py', lineno=58, function='run', code_context=[' stack=inspect.stack()\n'], index=0),
# FrameInfo(frame=<frame object at 0x00000170202FB808>, filename='D:/PycharmProjects/flask/flask_demo/app.py', lineno=60, function='person', code_context=[' return run()\n'], index=0),
# FrameInfo(frame=<frame object at 0x000001701E06FA38>, filename='D:/PycharmProjects/flask/flask_demo/app.py', lineno=61, function='<module>', code_context=['person()\n'], index=0)]
import inspect def func(name,phone,authcCde=""):
return name,phone,authcCde apiMethod=func
args = inspect.getfullargspec(apiMethod).args
print(args)
inspect模块的使用的更多相关文章
- python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性
python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性 inspect import inspect def fun(): pass inspect.ism ...
- 14 - 函数参数检测-inspect模块
目录 1 python类型注解 2 函数定义的弊端 3 函数文档 4 函数注解 4.1 annotation属性 5 inspect模块 5.1 常用方法 5.2 signature类 5.3 par ...
- inspect模块---检查活动对象
inspect模块提供了一些有用的函数来帮助获取有关活动对象(如模块,类,方法,函数,跟踪,框架对象和代码对象)的信息.例如,它可以帮助您检查类的内容,检索方法的源代码,提取和格式化函数的参数列表,或 ...
- inspect模块详解
inspect模块主要提供了四种用处: (1).对是否是模块,框架,函数等进行类型检查. (2).获取源码 (3).获取类或函数的参数的信息 (4).解析堆栈 使用inspect模块可以提供自省功能, ...
- python——inspect模块
inspect模块常用功能 import inspect # 导入inspect模块 inspect.isfunction(fn) # 检测fn是不是函数 inspect.isgenerator((x ...
- python之inspect模块
inspect模块主要提供了四种用处: 1.对是否是模块.框架.函数进行类型检查 2.获取源码 3.获取类或者函数的参数信息 4.解析堆栈 回到顶部 一.type and members 1. i ...
- python的inspect模块
一.type and members 1. inspect.getmembers(object[, predicate]) 第二个参数通常可以根据需要调用如下16个方法: 返回值为object的所有成 ...
- 【Python】【有趣的模块】tqdm | inspect
tqdm """ [tqdm] 显示循环的进度条,再也不用担心程序跑到哪里还要跑多久了 tqdm 可以直接包裹iterable对象 from tqdm import tq ...
- python模块inspect.py
inspect模块用来检查对象的类型(函数,属性,类,抽象基类,方法,模块等等) 是一个封装好的非常有用的模块. ]) ]: cls = :]: content = ] = lines[].lstri ...
随机推荐
- 从零开始搭建系统2.5——Apollo安装及配置
参见https://github.com/ctripcorp/apollo/wiki/Quick-Start安装即可
- B 树 B+树
拜读了 http://blog.csdn.net/v_july_v/article/details/6530142, 自己总结下: B树的出发点是为了解决磁盘IO慢的问题,尽量再一个磁盘块中提供更 ...
- Linux 错误: $'\r': command not found
是linux无法解析$'\r'.这其实是windows与linux系统的差异导致的. 因为linux上的换行符为\n,而windows上的换行符为\r\n.所以脚本到linux上就无法解析了. 通常的 ...
- http/tcp/ip/端口
http是www服务器和本地浏览器之间传输超文本的协议. 每一台机器都有一个属于自己的ip地址,计算机也需要知道是哪个程序来接受信息,这里也就引入了端口号,可以简单地理解每一个程序都有一个唯一的端口号 ...
- php array remove empty values
print_r(array_filter($linksArray)); 參考 Remove empty array elements Remove Empty Array Elements In PH ...
- jq-demo-楼梯效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- python系统模块
Python中大多数系统接口都集中在两个模块:sys和os.这么说有点过于简单化 还有一些其他的表转模块也属于这个领域他们包括: glob 用于文件名的扩展 socket 用于网络连接和进程间通信(I ...
- delphi 单元 MSHTML 之Ihtmldocument2
delphi : Ihtmldocument2接口的利用 MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,穿越其供给的规范接口,能够访问指定网页的所有元素. MS ...
- NX二次开发-C++的vector排序去重用法
#include <algorithm> //vector排序去重 sort( BoxNum.begin(), BoxNum.end()); BoxNum.erase(unique(Box ...
- JTable更新内容的方法
JTable更新内容的方法 DefaultTableModel dtm=new DefaultTableModel(data,head);//定义表格模型 jt.setModel(dtm);或jt=n ...