我想定义一个函数,它接受一些参数作为输入,并使用它们来创建另一个函数,然后输出新函数。
例如:
makeIncrease(n) - >返回一个带参数的函数,并返回(参数+ n)
applyIncrease(increaseFn,m) - >将increaseFn应用于参数m
所以,如果我这样做:applyIncrease(makeIncrease(n),m) - >将返回m + n
我怎么能在python中做到这一点?
答案 0 :(得分:4)
您可以在Python中阅读有关装饰器的更多信息。针对您的具体问题:
def applyIncrease(increaseFn, m):
return increaseFn(m)
def makeIncrease(n):
def _innerFn(arg):
return arg + n
return _innerFn
applyIncrease
接受函数和参数,并将函数应用于参数。
makeIncrease
接受参数n
。
假设一个例子,假设n = 2。 makeIncrease(2)
返回一个带参数的函数,并为其添加2。
虽然我使用下划线开始_innerFn
,但这只是一个惯例 - 装饰器不需要下划线。
另请注意,函数是Python中的第一类对象,makeIncrease
返回_innerFn
而不是_innerFn()
。返回函数与变量或对象引用完全相同 - 没有括号。
以下是解释器中的功能。请注意,对象引用wrapped_function
引用_innerFn
,即makeIncrease(2)
的返回值
>>> wrapped_function = makeIncrease(2)
>>> wrapped_function
<function _innerFn at 0x100496758>
>>> total = applyIncrease(wrapped_function, 3)
>>> total
5
答案 1 :(得分:0)
class Example:
def result():
def nestedResult(a,b):
multiply = a*b
return multiply
return nestedResult
if __name__ == "__main__":
x = result()
print "multiplication_result:", x(1,10)