亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么下面的代碼會報錯——“錯誤:‘NoneType’對象不可調用”?

為什么下面的代碼會報錯——“錯誤:‘NoneType’對象不可調用”?

HUWWW 2023-06-06 17:17:11
我試圖在 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不帶括號即可。裝飾器總是返回一個函數。他們不應該調用該函數。


查看完整回答
反對 回復 2023-06-06
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號