[問題] 閉包(closure)的用法或意義

看板Python作者 (速球勝負 + 45度角絕殺)時間4年前 (2019/09/13 20:53), 編輯推噓6(607)
留言13則, 6人參與, 4年前最新討論串1/2 (看更多)
各位先進好 小弟最近看Lubanovic的Python教科書, 描述閉包的部分, 不是很懂其意義 如下: def knights5(saying): def inner2(): return "We are the knights who say: '%s'" % saying return inner2 我知道會回傳夾帶外部引數的inner2()函式 但具體上這樣的東西意義或用法或優點是什麼呢? 作者在這邊寫的內容小弟不是很能理會 有請大家解惑, 感謝~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.83.117 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1568379223.A.DE9.html

09/13 21:27, 4年前 , 1F
閉包=保存狀態
09/13 21:27, 1F

09/13 21:30, 4年前 , 2F
完全可以想像成宣告一個匿名的class並即時建構
09/13 21:30, 2F

09/13 23:30, 4年前 , 3F
好處就是把 function 丟進去後得到另外一個 function
09/13 23:30, 3F

09/13 23:30, 4年前 , 4F
意思就是我可以動態的對 function 行為做加工
09/13 23:30, 4F

09/14 01:53, 4年前 , 5F
之後你應該會看到decorator 很有趣又實用的東西
09/14 01:53, 5F

09/14 19:47, 4年前 , 6F
去看看裝飾器
09/14 19:47, 6F

09/15 18:30, 4年前 , 7F
了解 那我先往下看了
09/15 18:30, 7F

09/22 10:21, 4年前 , 8F
closure要跟decorator一起看比較實用,不過closure在數
09/22 10:21, 8F

09/22 10:21, 4年前 , 9F
學上比較符合直覺,像f(g(x))的用法。
09/22 10:21, 9F

09/22 10:32, 4年前 , 10F
然後一定會有人提到lambda,但lambda只提供一個statemen
09/22 10:32, 10F

09/22 10:32, 4年前 , 11F
t ,所以你的function 夠複雜的話,那closure 會是比較
09/22 10:32, 11F

09/22 10:32, 4年前 , 12F
好的表達式就是了。closure 比較是屬於JavaScript 的概
09/22 10:32, 12F

09/22 10:32, 4年前 , 13F
念,可以順便了解JavaScript 你會更懂closure。
09/22 10:32, 13F
文章代碼(AID): #1TUv5Ntf (Python)
文章代碼(AID): #1TUv5Ntf (Python)