溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

一個簡單實例,理解python閉包

發(fā)布時間:2020-08-10 14:52:10 來源:ITPUB博客 閱讀:176 作者:云小蟲2019 欄目:編程語言

問題 : 模擬一個存錢罐

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

代碼: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
##實例化(壓歲錢不同以區(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ù)+環(huán)境變量)

閉包,就是一個函數(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)存中長存,也就起到了累加的作用。

向AI問一下細(xì)節(jié)

免責(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)容。

AI