这个装饰器在 python 中是如何工作的
How does this decorator work in python
我有这个装饰器是别人用代码写的,但我无法得到它
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
我的想法是装饰器将函数名作为参数但是这里
我不知道 func
和 obj
是从哪里来的
这个-
@mydecorator('test1', 'test2')
def getdata():
pass
类似于(没有创建 decofunc
名称)-
decofunc = mydecorator('test1', 'test2')
@decofunc
def getdata():
pass
因为 mydecorator()
returns f1
,它接受函数作为参数。
然后它获取 getdata
函数作为参数。和 returns new_func
,名称 getdata
被替换为 new_func
,因此无论何时调用 getdata()
它都会调用此 new_func
函数,它在内部调用您原来的 getdata()
函数。
我有这个装饰器是别人用代码写的,但我无法得到它
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
我的想法是装饰器将函数名作为参数但是这里
我不知道 func
和 obj
是从哪里来的
这个-
@mydecorator('test1', 'test2')
def getdata():
pass
类似于(没有创建 decofunc
名称)-
decofunc = mydecorator('test1', 'test2')
@decofunc
def getdata():
pass
因为 mydecorator()
returns f1
,它接受函数作为参数。
然后它获取 getdata
函数作为参数。和 returns new_func
,名称 getdata
被替换为 new_func
,因此无论何时调用 getdata()
它都会调用此 new_func
函数,它在内部调用您原来的 getdata()
函数。