我試圖在 python 中實現裝飾器,但在第 14 行出現錯誤,即 hello() #The code- def maint(item1): def greet(): print("Good Morning") item1() print("Tanish") return greet() #decorator---- @maint def hello(): print("Hello") # hello=maint(hello) hello()我究竟做錯了什么?
1 回答

偶然的你
TA貢獻1841條經驗 獲得超3個贊
return greet()
在裝飾器中,您調用greet()
并返回其結果。由于greet()
沒有顯式返回,因此結果為None
。這將有助于認識到裝飾器是這樣的簡寫語法:
def hello(): passhello = maint(hello)
注意 hello 是如何被重新分配給任何maint()
返回值的。在您的情況下,hello
被重新分配給None
. 所以調用hello()
會導致錯誤。
要解決此問題,只需return greet
不帶括號即可。裝飾器總是返回一個函數。他們不應該調用該函數。
添加回答
舉報
0/150
提交
取消