我今天遇到了以下代码:
def deriv(f):
def df(x):
h = 0.001
total = (f(x+h)-f(X))/h
return round(total, 3)
return df
def g(x):
return x*x + 2*x + 2
print(deriv(g)(3))
在deriv(g(后面有3个类似于"1"的符号意味着什么;deriv(g((3(?这就是将参数传递给在另一个函数内部定义的函数的方式吗?它到底在那里干什么?
TL;博士:这几乎和其他所有函数一样,只允许您动态创建函数
让我们把它归结为
def wrapper(constant) -> Callable:
def inner(x) -> float:
return x+constant
return inner
foo = wrapper(2)
会给你返回一个类似的函数吗
foo(x):
return x + 2
你可以把它想象成类似这样:
wrapper(2)(100) == foo(100)
在您的情况下,deriv(g)
创建一个函数,并用传递的函数替换def dx
中的f
,并创建一个g固定的函数。
它的行为如下:
# deriv(g) ->
dg(x):
h = 0.001
total = (g(x+h)-g(X))/h
return round(total, 3)
return df