gpt4 book ai didi

python - 这个装饰器在 python 中是如何工作的

转载 作者:太空狗 更新时间:2023-10-30 01:14:03 24 4
gpt4 key购买 nike

我有别人用代码写的这个装饰器,但我无法得到它

def mydecorator(a, b):
def f1(func):
def new_func(obj):
try:
f= func(obj)
except Exception as e:
pass
else:
if f is None:
pass
else:
f = f, a, b

return f
return new_func
return f1

这适用于这样的功能

@mydecorator('test1', 'test2')
def getdata():
pass

我的想法是装饰器将函数名作为参数但是在这里

我无法知道 funcobj 是从哪里来的

最佳答案

这个-

@mydecorator('test1', 'test2')
def getdata():
pass

类似于(没有创建 decofunc 名称)-

decofunc = mydecorator('test1', 'test2')
@decofunc
def getdata():
pass

因为 mydecorator() 返回 f1 ,它接受函数作为参数。

然后它获取 getdata 函数作为参数。并返回 new_func ,名称 getdata 被这个 new_func 替换,因此无论何时调用 getdata()它调用此 new_func 函数,该函数在内部调用您原来的 getdata() 函数。

关于python - 这个装饰器在 python 中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33028767/

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