Python 在没有所有给定参数的情况下调用函数
我试图理解以下语法。为什么允许它传递小于给定结果的参数?比如说,Python 在没有所有给定参数的情况下调用函数,python,Python,我试图理解以下语法。为什么允许它传递小于给定结果的参数?比如说, def fit_curve_custom(f, xdata, ydata, p0=None, sigma=None, **kwargs): po, pc = curve_fit(f, xdata, ydata, p0, sigma, **kwargs) def fit(x, a, b, c): return a*exp(b)+c (po, pun, rac, de) = fit_curve_custom(fit,
def fit_curve_custom(f, xdata, ydata, p0=None, sigma=None, **kwargs):
po, pc = curve_fit(f, xdata, ydata, p0, sigma, **kwargs)
def fit(x, a, b, c):
return a*exp(b)+c
(po, pun, rac, de) = fit_curve_custom(fit, xsamples, yobserved)
在上面的代码中,fit\u curve\u custom有六个参数,但是当稍后调用它时,只传递了三个参数,而它的行为仍然与预期的一样?这个语法真的有名字吗?此外,函数fit
有四个参数,但在fit\u curve\u custom
中调用时,没有传递任何参数?为什么可能呢
fit_curve_custom(fit, xsamples, yobserved)
这是可能的,因为fit\u curve\u custom
的最后两个参数是可选参数
或命名参数
如果没有通过,则将有一个默认值
p0=无,西格玛=无
最后一个kwargs
是一个关键字参数,它是python约定,允许将命名参数的dict
传递到函数中,在函数内部可以访问它们kwargs['arg1']
例如:
fit_curve_custom(fit, xsamples, yobserved, p1 = None, sigma = None, arg1 = 'a', arg2 = 'b')
在fit\u curve\u custom(fit,xsamples,yobserved)
中,fit
此处实际上没有被调用,它被传递到fit\u curve\u custom
函数(函数可以作为常规值传递)并被调用,如:
def fit_curve_custom(f, xdata, ydata, p0=None, sigma=None, **kwargs):
calc_res = f(10, 10, 10, 10) # call f
po, pc = curve_fit(f, xdata, ydata, p0, sigma, **kwargs) # f is passed to another function
请参阅标准教程中的。该语法称为具有默认参数的函数。另外,
fit\u curve\u custom
不调用fit()函数。@martineau不调用fit函数是什么意思?拟合函数在fit\u curve\u custom
function@tdelaney该链接有帮助,在fit\u curve\u custom()
函数中没有调用传递的fit()
函数。