gpt4 book ai didi

python - 有什么是 python 函数装饰器可以做而我不能用一流函数做的吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:42 25 4
gpt4 key购买 nike

我正在尝试理解 Python 函数装饰器,但到目前为止,我还没有看到任何情况下函数装饰器可以完成我使用第一类函数无法完成的事情。

例如,记录器装饰器通常作为有用函数装饰器的简单示例给出:

def logger(f):
def new_f():
print("Calling %s" % f.__name__)
return f()
return new_f

这个装饰器通常与我们想要记录的函数一起使用,如下所示:

@logger
def fun1():
[do something]

但是,为了获得相同的结果,我们可以定义 func1 并用记录器包装它:

def fun2():
[do something]
def logged_fun2():
return logger(fun2)()

调用logged_fun2与调用fun1类似。此外,当我们用 logger 包装 fun2 时,如果我们愿意,我们仍然可以调用原始的 fun2 而不进行日志记录。

是否有一些事情是我可以使用装饰器完成而使用一流函数无法完成的?或者将装饰器视为包装函数的语法糖的一种形式更好?

最佳答案

装饰器语法:

@deco
def f(...):
...

defined完全等同于以下语法:

def f(...):
...
f = deco(f)

所以不,装饰器能做的事情都是一流函数做不到的。装饰器一流的函数。

关于python - 有什么是 python 函数装饰器可以做而我不能用一流函数做的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25375051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com