[问题] 闭包(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