我有一个问题:
我需要在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)
返回一个新函数,然后将a
和b
作为参数。
要实现这一点,你需要一个返回函数的函数。
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