Re: [問題] lambda 在迴圈內設定的問題

看板Python作者 (poototo)時間2年前 (2022/03/28 23:11), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
# 可用閉包讓子函數記住i LL = [(lambda i: lambda:print(i))(i) for i in range(3)] for L in LL: L() ※ 引述《pshuang (中山先生忠實信徒-我愛蘿)》之銘言: : Os環境:Win7 : Py版本: 3.8.10 : lambda關鍵字,如果在迴圈內設定,又沒帶參數, : 感覺結果想不通。想請問原因。 : code如下: : #--------------------無參數----------------------- : l_l = [ lambda: print(i) for i in range(3) ] : for l in l_l: l() : 輸出結果: : 2 : 2 : 2 : #--------------------帶參數--------------------- : l_l2 = [ lambda x = i: print(x) for i in range(3) ] : for l in l_l2: l() : 輸出結果: : 0 : 1 : 2 : 請問,沒帶參數的場合,每次迴圈還是把當下的 i 傳給 print 不是嗎? : 為甚麼輸出結果卻都是迴圈的最後一個值呢? : 這是lambda的某種特性嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.89.24 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1648480279.A.5AC.html
文章代碼(AID): #1YGT0NMi (Python)
文章代碼(AID): #1YGT0NMi (Python)