作者h888512 (速球勝負 + 45度角絕殺)
看板Python
標題[問題] 閉包(closure)的用法或意義
時間Fri Sep 13 20:53:38 2019
各位先進好
小弟最近看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://webptt.com/m.aspx?n=bbs/Python/M.1568379223.A.DE9.html
1F:推 CaptainH: 閉包=保存狀態 09/13 21:27
2F:推 CaptainH: 完全可以想像成宣告一個匿名的class並即時建構 09/13 21:30
3F:→ s860134: 好處就是把 function 丟進去後得到另外一個 function 09/13 23:30
4F:→ s860134: 意思就是我可以動態的對 function 行為做加工 09/13 23:30
5F:推 TitanEric: 之後你應該會看到decorator 很有趣又實用的東西 09/14 01:53
6F:推 yushes920179: 去看看裝飾器 09/14 19:47
7F:→ h888512: 了解 那我先往下看了 09/15 18:30
8F:推 sxy67230: closure要跟decorator一起看比較實用,不過closure在數 09/22 10:21
9F:→ sxy67230: 學上比較符合直覺,像f(g(x))的用法。 09/22 10:21
10F:推 sxy67230: 然後一定會有人提到lambda,但lambda只提供一個statemen 09/22 10:32
11F:→ sxy67230: t ,所以你的function 夠複雜的話,那closure 會是比較 09/22 10:32
12F:→ sxy67230: 好的表達式就是了。closure 比較是屬於JavaScript 的概 09/22 10:32
13F:→ sxy67230: 念,可以順便了解JavaScript 你會更懂closure。 09/22 10:32