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

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

python的閉包和JS的閉包不一樣嗎?

def?count():??fs?=?[]????for?i?in?range(1,?4):????????n?=?i?*?i????????def?f():????????????return?n????????fs.append(f)????return?fsf1,?f2,?f3?=?count()print?f1(),?f2(),?f3()


正在回答

3 回答

n=i*i,其實和原來示例里寫的意思是一樣的,你的fs.append(f),這時候進去def f(),返回一個n值給fs,但是你要注意,你的n值下一回在i=2、i=3的時候,是需要用的,也就是n值會改變,不管你的n=i*i放在def f()里面還是外面都一樣是在for循環里面,那么n肯定最后會變成3*3。那你前面傳進去的n 也自然變成 9 。不知道這么說,能否理解,可以參考我的代碼,我提交了

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

我在第四行用變量 n 保存了當前 i 的平方結果,最后還是返回 9 9 9,和JS的結果不一樣。

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

def count():

? ? fs = []

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

? ? ? ? n = i * i

? ? ? ? def f():

? ? ? ? ? ? return n

? ? ? ? fs.append(f)

? ? return fs


f1, f2, f3 = count()

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


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

舉報

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

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

進入課程

python的閉包和JS的閉包不一樣嗎?

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

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

幫助反饋 APP下載

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

公眾號

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