[英]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()
返回f1
,它接受函數作為參數。
然后它獲取getdata
函數作為參數。 並返回new_func
,名稱getdata
替換為此new_func
,因此無論何時調用getdata()
它都會調用new_func
函數,該函數在內部調用原始的getdata()
函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.