Python:如何用两个形参作为实参传递函数



我有一个问题:

我需要在python中实现一个函数,它打印一个参数的整数倍-参数是一个函数本身,具有签名:

def innerF(a,b):
return x

标量乘法器是函数内的常数-例如

return 55 * x

现在是我不明白的部分:调用Sytanx要求为:

print( outerF(innerF)(a,b))

总结一下

def innerF(a,b):
return a + b
def outerF( #What goes here? ):
return 55* #How two call the innerF?
print(outerF(innerF)(a,b))

我所知道的:

  • 我可以将innerF和a,b作为单独的参数传递给outerF,如

    def outerF (innerF, a, b):return 53* innerF(a,b)

我不知道的:

我完全不知道带有innerF(outerF)(a,b)的outerF调用的签名。我也找不到参考。

提前非常感谢!

outerF需要返回一个正在被(a, b)调用的函数

def innerF(a, b):
return a + b

def outerF(func):
# define a function to return
def f(*args, **kwargs):
# this just calls the given func & scales it
return 55 * func(*args, **kwargs)
return f

print(outerF(innerF)(1, 2))

结果:

165  # 55 * (1+2)

所以你需要的是嵌套函数。

outerF(innerF)(a, b)

表示outerF(innerF)返回一个新函数,然后将ab作为参数。

要实现这一点,你需要一个返回函数的函数。

def inner(a, b):
return a + b
def outer(func):
def wrapper(a, b):
return 55 * func(a, b)
return wrapper
outer(inner)(2, 3) # 275

你也可以将外部函数用作装饰器。

@outer
def inner(a, b):
return a + b

inner(2, 3) # 275

最新更新