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

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

差別是什么啊

def count():

? ? fs = []

? ? for i in range(1, 4):

? ? ? ? def f(i):

? ? ? ? ? ? return i*i

? ? ? ? fs.append(f(i))

? ? return fs


f1, f2, f3 = count()

print f1, f2, f3

這個可以運行但是下面的為什么不可以啊

?def?count():
????fs?=?[]
????for?i?in?range(1,?4):
????????def?f(i):
????????????return?i*i
????????fs.append(f(i))
????return?fs

f1,?f2,?f3?=?count()
print?f1(),?f2(),?f3()

f1和f1()區別在哪???還有就是同學代碼里的lambda什么意思啊,在第二個代碼的第五行加一個lambda怎么就行了???

問題有些冗贅,還請包含小白的無知,謝謝大家!

正在回答

1 回答

首先,根據第五行return i*i和第六行fs.append(f(i))語句,count()返回的列表fs的元素是整數,而不是函數。

其次f1, f2, f3 = count()表示f1 = fs[0] , f2 = fs[1], f3 = fs[2],即f1, f2, f3均為整數,而不是函數。這個跟閉包教程里的代碼不一樣,教程里是fs.append(f)則fs的各項都是f函數。所以應該用print?f1而不能用print f1()

最后lambda表式匿名函數,第五行改成:return lambda: i * i,就表示f函數的返回值依然是函數,即fs這個列表的元素是函數。調用函數就是f1()

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

weibo_墨鴉墨鴉1_mrAN04 提問者

十分感謝!
2018-11-18 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

差別是什么啊

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

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

幫助反饋 APP下載

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

公眾號

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