如何将参数传递给内部函数



我今天遇到了以下代码:

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

最新更新