課程
/后端開發
/Python
/python進階
請問為什么以下最后返回的print內容不是'call function...'呢?
2020-02-07
源自:python進階 2-11
正在回答
def?new_fn(f): ???def?fn(x): ??????print('call'+f.__name__+'()') ??????return?f(x) ???return?fn new_fn(abs)(1)
試試
應該是abs(1)直接就是一個值,那么new_fn就當于你寫的new_fn(1)此時由于fn未接收參數,對于fn內部的兩句話完全沒有執行,return fn直接返回fn所在的位置
qq_慕少2210022
new_fn函數return fn, 就返回一個函數fn, 你這里傳入abs(1)就沒有按照你定義的new_fn來進行參數傳入,應該接收一個函數名作為參數,然后賦值給一個變量,這樣比較‘優雅’,f = new_fn(abs), print(f)將會打印你如圖所示長字符, print(f(-1))注意f其實就是指向返回的函數, 會打印出內部函數最終的返回結果, call abs..., 這里注意f和f( )的區別, 一個是函數, 一個是調用函數
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2020-02-09
試試
應該是abs(1)直接就是一個值,那么new_fn就當于你寫的new_fn(1)此時由于fn未接收參數,對于fn內部的兩句話完全沒有執行,return fn直接返回fn所在的位置
2020-02-09
new_fn函數return fn, 就返回一個函數fn, 你這里傳入abs(1)就沒有按照你定義的new_fn來進行參數傳入,應該接收一個函數名作為參數,然后賦值給一個變量,這樣比較‘優雅’,f = new_fn(abs), print(f)將會打印你如圖所示長字符, print(f(-1))注意f其實就是指向返回的函數, 會打印出內部函數最終的返回結果, call abs..., 這里注意f和f( )的區別, 一個是函數, 一個是調用函數