3 回答

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

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

TA貢獻2036條經(jīng)驗 獲得超8個贊
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:開始 100 結(jié)束 105
添加回答
舉報