一個(gè)簡(jiǎn)單實(shí)例,理解python閉包

問(wèn)題 : 模擬一個(gè)存錢罐

有兩個(gè)小朋友,小明,小唐。 年初,三位小朋友的媽媽給他們一定壓歲錢。小明有100壓歲錢,小唐有50。然后,每月他們不定期的將自己零花錢的一部分存起來(lái)。

創(chuàng)新互聯(lián)制作網(wǎng)站網(wǎng)頁(yè)找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開(kāi)發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為上千余家服務(wù),創(chuàng)新互聯(lián)網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷推廣服務(wù)!

代碼:Python閉包

##構(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
##實(shí)例化(壓歲錢不同以區(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())

說(shuō)明 :閉包=工廠+機(jī)器模板(函數(shù)+環(huán)境變量)

閉包,就是一個(gè)函數(shù),引用了函數(shù)外定義的變量,可以叫著自由變量或者環(huán)境變量。這里就是函數(shù)save,引用了外面定義的base_money變量。所以閉包,可以簡(jiǎn)單理解為一個(gè)函數(shù)+環(huán)境變量的封裝。

外面的函數(shù)factory_save,就像一個(gè)生產(chǎn)存錢罐的工廠,能生產(chǎn)一個(gè)個(gè)模板(save),同時(shí),在生產(chǎn)這個(gè)模板時(shí),能夠加入一些環(huán)境變量,如果顏色,材質(zhì)等。這里簡(jiǎn)單用的用壓歲錢的金額不同表示。

生產(chǎn)成的模板實(shí)例化后,就是一個(gè)個(gè)存錢罐,可以是小明的存錢罐,小唐的存錢罐。

這里需要注意是的,當(dāng)環(huán)境變量帶入模板函數(shù)后,這個(gè)變量的作用域就在這個(gè)函數(shù),并且能夠在內(nèi)存中長(zhǎng)存,也就起到了累加的作用。

本文名稱:一個(gè)簡(jiǎn)單實(shí)例,理解python閉包
URL鏈接:http://muchs.cn/article4/ishcoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站設(shè)計(jì)網(wǎng)站排名、網(wǎng)站維護(hù)、建站公司用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名