我不是python中的专业人士,但我通过这个概念来创建a higher order function
。这是一个返回另一个函数的函数。我已经在StackOverflow认真阅读了几乎所有的答案,但我真的不明白,也许我真傻懂,我不想推测。但是,如果有人提供一个直观的指南,可能会提供一个例子,或链接到某人可能会认为更好的答案在堆栈我感激。
这是我坚持的例子。
例如,假设您想要定义线性(a,b),它返回一个计算值a * x + b的函数f(x)。使用嵌套作用域:
提供此解决方案
def linear(a, b):
def result(x):
return a*x + b
return result
作为可调用对象
class linear:
def __init__(self, a, b):
self.a, self.b = a,b
def __call__(self, x):
return self.a * x + self.b
有人请为我说清楚。
答案 0 :(得分:1)
这可能是帮助理解第一个版本的小指南:
def linear(a, b):
def result(x):
return a*x + b
return result
ret = linear(2, 4)
print(ret) # <function linear.<locals>.result at 0x7ff7b4148510>
print(type(ret)) # <class 'function'>
print(ret(5)) # 14
和第二个:
class linear:
def __init__(self, a, b):
self.a, self.b = a,b
def __call__(self, x):
return self.a * x + self.b
lin = linear(2, 4)
print(lin) # <__main__.linear object at 0x7ff7b415a630>
print(type(lin)) # <class '__main__.linear'>
print(lin(5)) # 14
print(lin.__call__(5)) # 14 (this does exactly the same as the line above)
这有助于清理问题,或者你对这里的代码行有一个具体的问题吗?