我理解高阶函数是以函数作为参数或返回函数的函数。我还知道装饰器是为其他函数添加一些功能的函数。他们到底是什么。它们是作为参数传入的函数还是高阶函数本身?
注意:如果要给出一个示例,请在python中给出。
发布于 2020-06-11 16:16:01
高阶函数是将函数作为参数或*返回函数的函数。
Python中的装饰器(通常)是一个高阶函数的示例,但也有不是的装饰器(类装饰器**,以及不是函数的装饰器),还有一些高阶函数不是装饰器,例如那些带有两个必需参数的函数。
不是装饰师,不是高阶函数:
def hello(who):
print("Hello", who)不是装饰师,而是高阶函数:
def compose(f, g):
def wrapper(*args, **kwargs):
return g(f(*args, **kwargs))
return wrapper装饰师,而不是高阶函数:
def classdeco(cls):
cls.__repr__ = lambda self: "WAT"
return cls
# Usage:
@classdeco
class Foo:
pass装饰师,高阶函数:
def log_calls(fn):
def wrapper(*args, **kwargs):
print("Calling", fn.__name__)
return fn(*args, **kwargs)
return wrapper*不是异或
**你是否认为类装饰师是高阶函数,因为类是可调用的等等,我想是值得讨论的。
发布于 2020-06-11 16:26:40
高阶函数是以函数作为参数或返回函数的函数。
修饰器语法是一种语法快捷方式:
@f
def g(...):
...只是一个方便的缩写
def g(...):
...
g = f(g)因此,装饰师实际上只是一个以另一个函数作为参数的函数。谈论使用f作为装饰师比说f是装饰师要准确得多。
https://stackoverflow.com/questions/62328661
复制相似问题