課程
/后端開發
/Python
/python進階
這個方法只有一個參數,定義的時候可否只定義一個?還有如下問題有點疑問,希望有大佬幫忙看看解答....
2020-03-09
源自:python進階 2-12
正在回答
是不是可以這么理解, 最后一行的 factorial(10)? 其實已經不是原來的factorial()了,而是裝飾過的factorial()
在這里@performance等價于factorial =?performance(factorial),而performance(f)這個函數的返回結果是sf,所以factorial()這個函數就等價于sf(),所以你factorial(10)就是在調用sf(x),x就肯定是你傳遞的10啊。不能performance(f)理解成performance(f(x)),前者返回的是一個函數,按后者理解的話傳遞進去的是一個f(x)函數的調用結果,這樣理解也沒有意義,因為decorator的目的就是在不改原函數代碼的前提下,改變原函數的實現,肯定是要傳個函數去改變,傳個結果進去的話繞了半天,并沒有解決要解決的問題呀
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2020-05-18
是不是可以這么理解, 最后一行的 factorial(10)? 其實已經不是原來的factorial()了,而是裝飾過的factorial()
2020-03-13
在這里@performance等價于factorial =?performance(factorial),
而performance(f)這個函數的返回結果是sf,
所以factorial()這個函數就等價于sf(),
所以你factorial(10)就是在調用sf(x),
x就肯定是你傳遞的10啊。
不能performance(f)理解成performance(f(x)),
前者返回的是一個函數,按后者理解的話傳遞進去的是一個f(x)函數的調用結果,這樣理解也沒有意義,
因為decorator的目的就是在不改原函數代碼的前提下,改變原函數的實現,肯定是要傳個函數去改變,傳個結果進去的話繞了半天,并沒有解決要解決的問題呀