閉包的概念:
1. 函數(shù)名是什么
函數(shù)名就是一個(gè)標(biāo)識(shí)符,一個(gè)指向內(nèi)存地址的變量
該變量可以被調(diào)用, 如果調(diào)用執(zhí)行則執(zhí)行的是變量指向的內(nèi)存空間中的函數(shù)體,如果不調(diào)用則是一個(gè)變量名
#函數(shù)名是什么
def show():
print(123)
#show #就是指向一個(gè)內(nèi)存空間的變量名,只不過內(nèi)存空間中存放的是函數(shù)
print( show )
show()
2. 閉包
閉包實(shí)現(xiàn)封閉作用域,讓程序訪問到不可訪問的內(nèi)部數(shù)據(jù)
閉包的實(shí)現(xiàn):將內(nèi)部函數(shù)作為一個(gè)參數(shù)返回出去,讓內(nèi)部函數(shù)具備多重身份,即可以被外部調(diào)用,又是內(nèi)部函數(shù)(可以訪問到上一級(jí)函數(shù)的數(shù)據(jù))
3. 閉包的特征
1) 函數(shù)內(nèi)嵌套函數(shù)
2) 將內(nèi)部函數(shù)作為一個(gè)返回值
3) 在內(nèi)部函數(shù)中訪問上一級(jí)函數(shù)的數(shù)據(jù)
寫法:
def outer(a):
b = 10
def inner():
print(a+b)
return inner
'''
調(diào)用方式一
res = outer(5)
res()
'''
調(diào)用方式二
outer(20)()
閉包的作用:
1. 替代簡(jiǎn)單的類
優(yōu)點(diǎn):
內(nèi)存資源占用少
執(zhí)行速度快
代碼簡(jiǎn)潔,開發(fā)速度快
2. 延遲執(zhí)行、惰性函數(shù)
如果需要做一些非常耗時(shí)的操作,可以利用閉包的延遲執(zhí)行效果,實(shí)現(xiàn)更好的用戶體驗(yàn)