我想知道在Python中使用*args时,是否可以省略可选参数(使用它的默认值)。以下代码通过“print(a)”工作,因此在deriv函数调用中显式地包含可选参数h是有效的。我可以不写了吗?我的尝试(“b=…”,“c=…”,“d=…”)失败。还有别的办法吗?在
def deriv(f, x, h=1.e-9, *params):
return (f(x+h, *params)-f(x-h, *params))/(2.*h)
def f1(x, a, p):
return a*x**p
a = deriv(f1, 3, 1.e-9, 4, 5)
print(a)
b = deriv(f1, 3, , 4, 5)
c = deriv(f1, 3, 4, 5)
d = deriv(f1, 3, h, 4, 5)
看起来您使用的是Python 3,因此可以使用keyword-only arguments:
不,python将位置参数应用于所有命名参数,first;
h
是函数签名中的第三个位置参数,因此,*params
只捕获参数位置4及以上。在相反,请使用一个
**kwargs
参数来捕获任意关键字参数,并在h
中查找:现在在调用
^{pr2}$deriv
时,必须显式地命名h
:相关问题 更多 >
编程相关推荐