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