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

作者: h888512 (速球勝負 + 45度角絕殺)   2019-09-13 20:53:38
各位先進好
小弟最近看Lubanovic的Python教科書, 描述閉包的部分, 不是很懂其意義
如下:
def knights5(saying):
def inner2():
return "We are the knights who say: '%s'" % saying
return inner2
我知道會回傳夾帶外部引數的inner2()函式
但具體上這樣的東西意義或用法或優點是什麼呢?
作者在這邊寫的內容小弟不是很能理會
有請大家解惑, 感謝~~
作者: CaptainH (Cannon)   2019-09-13 21:27:00
閉包=保存狀態完全可以想像成宣告一個匿名的class並即時建構
作者: s860134 (s860134)   2019-09-13 23:30:00
好處就是把 function 丟進去後得到另外一個 function意思就是我可以動態的對 function 行為做加工
作者: TitanEric (泰坦)   2019-09-14 01:53:00
之後你應該會看到decorator 很有趣又實用的東西
作者: yushes920179 (樂冰)   2019-09-14 19:47:00
去看看裝飾器
作者: h888512 (速球勝負 + 45度角絕殺)   2019-09-15 18:30:00
了解 那我先往下看了
作者: sxy67230 (charlesgg)   2019-09-22 10:21:00
closure要跟decorator一起看比較實用,不過closure在數學上比較符合直覺,像f(g(x))的用法。然後一定會有人提到lambda,但lambda只提供一個statement ,所以你的function 夠複雜的話,那closure 會是比較好的表達式就是了。closure 比較是屬於JavaScript 的概念,可以順便了解JavaScript 你會更懂closure。

Links booklink

Contact Us: admin [ a t ] ucptt.com