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

為了賬號安全,請及時綁定郵箱和手機立即綁定

誰能告訴我 def log(f): 的時候 return f(x) 是什么意思嗎

重新定義f(x)的意思?

def log(f):
? ?def fn(x):
? ? ? ?print 'call ' + f.__name__ + '()...'
? ? ? ?return f(x)//////這里為什么要這樣?什么意思
? ?return fn

正在回答

3 回答

假設A函數是原來的函數,B函數是用來裝飾A函數的函數,C函數是B函數中定義的包裝了A的函數。

講解里面的factorial(n)是A函數,執行后有一個返回值。

log(f)函數是B函數,用來裝飾A函數的。

log(f)中的fn(x)函數是包裝了A的函數C。

裝飾器的效果就是讓A的名字指向C函數,所以最終調用A就是在調用C。A函數中有一個返回值,則C中必須也有一個返回值,這個返回值是原來的A的執行結果。所以fn(x) ?函數中必須用“return f(x)”返回被裝飾函數A的返回值,這樣C函數的返回值和A函數是相同的。

2 回復 有任何疑惑可以回復我~

這個是為了保證輸出,執行你之前沒有裝飾的函數。我的理解。就是為了保證經過裝飾之后還是與原來的功能一樣,只不過多了一些說明性的東西

3 回復 有任何疑惑可以回復我~

同問,看懂的來說一下。

0 回復 有任何疑惑可以回復我~
#1

兔子愛叫 提問者

看懂啦 那個是為了調用函數f(x) 也就是log(f)中的f 下面用到的@log 的意思翻譯過來其實就是log=log(函數名) 這個函數名類似于實例 用來寫具體怎么運行
2015-10-12 回復 有任何疑惑可以回復我~
#2

linjiexin 回復 兔子愛叫 提問者

你這回答真心看不懂答的是什么……
2015-11-17 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
python進階
  • 參與學習       255563    人
  • 解答問題       3038    個

學習函數式、模塊和面向對象編程,掌握Python高級程序設計

進入課程

誰能告訴我 def log(f): 的時候 return f(x) 是什么意思嗎

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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