在某些python框架底层的开发需求中,需要通过一些类似反射的手段,提取函数接口的信息,从而对一系列函数接口进行管理。本篇文章就来粗浅谈一下,如何提取python函数的接口定义信息。
function对象的信息
首先我们拿一个函数来试试手:
1 | def myprinter(s: str, /, e: str = '\n', *, prefix: Any = '') -> Tuple[bool, str]: |
这个函数myprinter
采用了新的语法糖/
以及*
,/
的左边表示强制位置参数(positional-only arguments),*
的右边表示强制关键字参数(keyword-only arguments),而两者中间的参数在使用时以位置参数或者是关键字参数的形式表达都可以。
要提取这个函数的信息,我们首先要知道函数本身也是一种对象。因此,可以用到dir
函数,遍历这个对象的属性,从而提取所有属性的值。
通过dir
导出函数对象的属性与值,打印的结果如下: