Python inspect.getargspec with built-in function
我正试图找出从模块中检索到的方法的参数。我发现了一个具有便捷功能的
1 2 3 4 | import math, inspect def foobar(a,b=11): pass inspect.getargspec(foobar) # this works inspect.getargspec(math.sin) # this doesn't |
我会得到这样的错误:
1 2 3 | File"C:\...\Python 2.5\Lib\inspect.py", line 743, in getargspec raise TypeError('arg is not a Python function') TypeError: arg is not a Python function |
号
对于用C而不是python实现的函数,不可能获得这种信息。
原因是,除了解析(自由格式)docstring之外,没有办法找出方法接受的参数,因为参数是以(某种程度上)getarg的方式传递的,也就是说,如果不实际执行函数,就不可能找出它接受的参数。
您可以获取此类函数/方法的文档字符串,这些函数/方法几乎总是包含与getargspec相同的信息类型。(即参数名称、参数编号、可选参数、默认值)。
在你的例子中
1 2 | import math math.sin.__doc__ |
给予
1 2 3 | "sin(x) Return the sine of x (measured in radians)" |
号
不幸的是,在操作中有几个不同的标准。看看标准的python docstring格式是什么?
您可以检测到正在使用哪个标准,然后以这种方式获取信息。从上面的链接来看,Pyment在这方面可能会有所帮助。