3 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
該函數(shù)wrapper
中沒(méi)有 return 語(yǔ)句,因此它返回None
。因此 start_end_decorator() 中的這一行:
return wrapper()
返回None
。您的意圖肯定是返回函數(shù),而不是函數(shù)的返回值。嘗試將該語(yǔ)句更改為:
return wrapper

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
裝飾器必須返回一個(gè)可調(diào)用對(duì)象。 start_end_decorator
但是,正在返回 的返回值wrapper
。由于wrapper
沒(méi)有return
聲明,None
因此隱式返回。 None
不是可調(diào)用對(duì)象,因此會(huì)出現(xiàn)錯(cuò)誤。
你想要的是從你的裝飾器返回wrapper
而不是wrapper()
.

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
def start_end_decorator(func):
def wrapper(*args,**kwargs):
print('start')
result=func(*args,**kwargs)
print('End')
return result
return wrapper
@start_end_decorator
def add(x): print (x) return x+5
結(jié)果=添加(100)打?。ńY(jié)果)
O/P:開(kāi)始 100 結(jié)束 105
添加回答
舉報(bào)