参考链接:https://blog.csdn.net/weixin_35955795/article/details/53053762
更深:https://blog.csdn.net/mldxs/article/details/8652010
inspect的作用:
(1). 对是否是模块,框架,函数等进行类型检查。
(2). 获取源码
(3). 获取类或函数的参数的信息
(4). 解析堆栈
此处对第三种进行介绍:
inspect.signature(fn)将返回一个inspect.Signature类型的对象,值为fn这个函数的所有参数
inspect.Signature对象的paramerters属性是一个mappingproxy(映射)类型的对象,值为一个有序字典(Orderdict)。
这个字典里的key是即为参数名,str类型
这个字典里的value是一个inspect.Parameter类型的对象,根据我的理解,这个对象里包含的一个参数的各种信息
inspect.Parameter对象的kind属性是一个_ParameterKind枚举类型的对象,值为这个参数的类型(可变参数,关键词参数,etc)
inspect.Parameter对象的default属性:如果这个参数有默认值,即返回这个默认值,如果没有,返回一个inspect._empty类。