你能解釋一下閉包(因為它們與Python有關)嗎?我一直在閱讀很多關于閉包的內容,我認為我理解它們,但是沒有為自己和他人蒙上陰影,我希望有人可以盡可能簡潔明了地解釋閉包。我正在尋找一個簡單的解釋,可以幫助我理解我想要使用它們的地點和原因。
3 回答
BIG陽
TA貢獻1859條經驗 獲得超6個贊
它很簡單:一個函數引用包含范圍的變量,可能在控制流離開該范圍之后。最后一點非常有用:
>>> def makeConstantAdder(x):... constant = x... def adder(y):... return y + constant... return adder... >>> f = makeConstantAdder(12)>>> f(3)15>>> g = makeConstantAdder(4)>>> g(3)7
請注意,12和4分別在f和g內部“消失”,這個特性使f和g適當閉合。
偶然的你
TA貢獻1841條經驗 獲得超3個贊
我喜歡這個粗略,簡潔的定義:
可以引用不再活動的環境的函數。
我補充一下
閉包允許您將變量綁定到函數中,而不將它們作為參數傳遞。
接受參數的裝飾器是閉包的常用用途。閉包是這種“功能工廠”的常見實現機制。在運行時通過數據修改策略時,我經常選擇在策略模式中使用閉包。
在允許匿名塊定義的語言中 - 例如,Ruby,C# - 閉包可用于實現(多少)新穎的新控制結構。缺少匿名塊是Python中閉包的限制之一。
添加回答
舉報
0/150
提交
取消
