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

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

這樣改為什么不行

def count():

? ? fs = []

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

? ? ? ? def f(a):

? ? ? ? ? ? return a*a

? ? ? ? c=f(i)

? ? ? ? fs.append(c)

? ? return fs


f1, f2, f3 = count()

print f1(), f2(), f3()


正在回答

2 回答

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

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

這里并沒有運行到 閉包,會直接運行處結果,f1,f2,f3 得到的就是整數,所以就不能調用了?print f1(), f2(), f3(),

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

spider18

你的代碼沒有閉包,調用的時候回直接運行完
2015-11-05 回復 有任何疑惑可以回復我~

print f1, f2, f3

def count():

? ? fs = []

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

? ? ? ? def f(j):

? ? ? ? ? ? def g():

? ? ? ? ? ? ? ? return j*j

? ? ? ? ? ? return g

? ? ? ? r = f(i)

? ? ? ? fs.append(r)

? ? return fs

f1, f2, f3 = count()

print f1, f2, f3

為什么參考代碼的最后輸出的時候把f1,f2,f3后面的()去掉之后就沒有輸出了?

為什么上面問題里面的代碼把括號去掉之后才能正確輸出,兩者除了閉包重數之外還有什么區別?

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

舉報

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

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

進入課程

這樣改為什么不行

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

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

幫助反饋 APP下載

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

公眾號

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