Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在没有所有给定参数的情况下调用函数_Python - Fatal编程技术网

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()
函数。