您好,登錄后才能下訂單哦!
有兩個小朋友,小明,小唐。 年初,三位小朋友的媽媽給他們一定壓歲錢。小明有100壓歲錢,小唐有50。然后,每月他們不定期的將自己零花錢的一部分存起來。
##構(gòu)造閉包
def factory_save(base_money):
def save(add_money=0):
nonlocal base_money
sum_money = base_money + add_money
base_money = sum_money
return sum_money
return save
##實例化(壓歲錢不同以區(qū)別)
xiaoming_save = factory_save(100)
xiaotang_save = factory_save(50)
#小明存錢
##存錢
xiaoming_save(20)
##顯示當(dāng)前存款
print(xiaoming_save())
#小唐存錢
##存錢
xiaotang_save(5)
##顯示當(dāng)前存款
print(xiaotang_save())
閉包,就是一個函數(shù),引用了函數(shù)外定義的變量,可以叫著自由變量或者環(huán)境變量。這里就是函數(shù)save,引用了外面定義的base_money變量。所以閉包,可以簡單理解為一個函數(shù)+環(huán)境變量的封裝。
外面的函數(shù)factory_save,就像一個生產(chǎn)存錢罐的工廠,能生產(chǎn)一個個模板(save),同時,在生產(chǎn)這個模板時,能夠加入一些環(huán)境變量,如果顏色,材質(zhì)等。這里簡單用的用壓歲錢的金額不同表示。
生產(chǎn)成的模板實例化后,就是一個個存錢罐,可以是小明的存錢罐,小唐的存錢罐。
這里需要注意是的,當(dāng)環(huán)境變量帶入模板函數(shù)后,這個變量的作用域就在這個函數(shù),并且能夠在內(nèi)存中長存,也就起到了累加的作用。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。