誰能告訴我 def log(f): 的時候 return f(x) 是什么意思嗎
重新定義f(x)的意思?
def log(f):
? ?def fn(x):
? ? ? ?print 'call ' + f.__name__ + '()...'
? ? ? ?return f(x)//////這里為什么要這樣?什么意思
? ?return fn
重新定義f(x)的意思?
def log(f):
? ?def fn(x):
? ? ? ?print 'call ' + f.__name__ + '()...'
? ? ? ?return f(x)//////這里為什么要這樣?什么意思
? ?return fn
2015-10-08
舉報
2015-12-20
假設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函數是相同的。
2015-11-14
這個是為了保證輸出,執行你之前沒有裝飾的函數。我的理解。就是為了保證經過裝飾之后還是與原來的功能一樣,只不過多了一些說明性的東西
2015-10-10
同問,看懂的來說一下。