有没有办法返回任意函数在其他文件中定义的参数个数?我已经尝试在inspect中使用Signature类,如下所示:

from foo import func1, func2, func3
from inspect import signature
from scipy.optimize import curve_fit

func_list = [ func1, func2, func3 ]

n, bins, patches = hist( array )

for f in func_list:
    sig = signature(f)
    args = sig.parameters['args']

    p = np.ones( len(args) )

    params = curve_fit( f, bins[1:], n, p0 = p )
    print(params[0])

但是,从我看到的情况来看,这并不是我需要的签名,只适用于本地用户定义的函数 .

这里出现问题的地方是我在一个类中有一个测试函数(修改过的高斯函数),它接受一个必需参数(输入数组)和三个拟合参数:

def _pdf( self, x, a, b, c ):
    return np.sqrt(a) * ( np.exp(-(b*x)**2 / c ) / np.sqrt(2.0 * np.pi) )

我希望在上面的例子中 len( params[0] ) 的值为3 .

np.ones的初始化是任意的(因为我知道没有说明p0将给出所有参数的数量都在猜测1)但是我将来修改这个数组 . 现在,我只需要能够手动确定p0的长度 .

上下文:我想使用scipy拟合一些曲线参数,但我不知道每个曲线在用户加载之前将具有多少拟合参数 .

有任何想法吗?谢谢