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

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

IDLE返回print內容不是function name

請問為什么以下最后返回的print內容不是'call function...'呢?

http://img1.sycdn.imooc.com//5e3d69770001f41803300182.jpg

正在回答

2 回答

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所在的位置

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

qq_慕少2210022

那如果是想要返回'call'+f.__name__+'()' 再加上x*2的值可以返回嗎
2020-02-19 回復 有任何疑惑可以回復我~

new_fn函數return fn, 就返回一個函數fn, 你這里傳入abs(1)就沒有按照你定義的new_fn來進行參數傳入,應該接收一個函數名作為參數,然后賦值給一個變量,這樣比較‘優雅’,f = new_fn(abs), print(f)將會打印你如圖所示長字符, print(f(-1))注意f其實就是指向返回的函數, 會打印出內部函數最終的返回結果, call abs..., 這里注意f和f( )的區別, 一個是函數, 一個是調用函數

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

舉報

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

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

進入課程

IDLE返回print內容不是function name

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

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

幫助反饋 APP下載

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

公眾號

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