11-[函数进阶]-闭包
生活随笔
收集整理的這篇文章主要介紹了
11-[函数进阶]-闭包
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.什么是閉包?
內(nèi)部函數(shù)對外部函數(shù)作用域里變量的引用(非全局變量),則稱內(nèi)部函數(shù)為閉包。
def outer():n = 10def inner():print("inner:", n)return innerval = outer() print(val) val()??
?
閉包的意義:返回的函數(shù)對象,不僅僅是一個函數(shù)對象,在該函數(shù)外還包裹了一層作用域,這使得,該函數(shù)無論在何處調(diào)用,優(yōu)先使用自己外層包裹的作用域
?
2.閉包再理解
- ?計算 y = a*x +b 的值
?
這個例子中,函數(shù)line與變量a,b構(gòu)成閉包。在創(chuàng)建閉包的時候,我們通過line_conf的參數(shù)a,b說明了這兩個變量的取值,這樣,我們就確定了函數(shù)的最終形式(y = x + 1和y = 4x + 5)。
我們只需要變換參數(shù)a,b,就可以獲得不同的直線表達(dá)函數(shù)。由此,我們可以看到,閉包也具有提高代碼可復(fù)用性的作用。
如果沒有閉包,我們需要每次創(chuàng)建直線函數(shù)的時候同時說明a,b,x。這樣,我們就需要更多的參數(shù)傳遞,也減少了代碼的可移植性。
閉包思考:1.閉包似優(yōu)化了變量,原來需要類對象完成的工作,閉包也可以完成 2.由于閉包引用了外部函數(shù)的局部變量,則外部函數(shù)的局部變量沒有及時釋放,消耗內(nèi)存?
轉(zhuǎn)載于:https://www.cnblogs.com/venicid/p/8431202.html
總結(jié)
以上是生活随笔為你收集整理的11-[函数进阶]-闭包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity经典游戏教程之:是男人就下10
- 下一篇: 显示日历的指令:cal