python函數(shù)之閉包

個人認為,這是一個較好的閉包的例子,典型的可以表明閉包的數(shù)據(jù)存儲功能。首先,這是一個嵌套函數(shù),外層函數(shù)counter在其作用域內(nèi)定義了一個變量base,并且外層函數(shù)的返回值是內(nèi)層函數(shù),這里注意,內(nèi)層函數(shù)用了nonlocal來聲明base:在自己的內(nèi)層函數(shù)作用域內(nèi),使用外層函數(shù)的base變量,而不是又在自己的內(nèi)部作用域定義自己的base,如此以來,base這個變量在程序運行時,就可以保存在內(nèi)存中了。

在編寫代碼中需要附加額外的狀態(tài)給函數(shù)時,一定要考慮使用閉包。

def counter():
    base = 0
    def inc(step=1):
        nonlocal base
        base += step
        print(base)
        return base
    return inc

f1 = counter()
f1()
f1()
f1()
f1()
f1()
f1()
f1()

運行結(jié)果:

"C:\Program Files\Python37\python.exe" D:/python_pycharm1/1.高階函數(shù).py
1
2
3
4
5
6
7

Process finished with exit code 0

個人理解,難免有偏差,歡迎評論交流!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容