Python函數(shù)中的函數(shù)(閉包)用法實(shí)例
本文實(shí)例講述了Python閉包的用法。分享給大家供大家參考,具體如下:
Python函數(shù)中也可以定義函數(shù),也就是閉包。跟js中的閉包概念其實(shí)差不多,舉個(gè)Python中閉包的例子。
def make_adder(addend): def adder(augend): return augend + addend return adder p = make_adder(23) q = make_adder(44) print(p(100)) print(q(100))
運(yùn)行結(jié)果是:123和144.
為什么?Python中一切皆對(duì)象,執(zhí)行p(100),其中p是make_adder(23)這個(gè)對(duì)象,也就是addend這個(gè)參數(shù)是23,你又傳入了一個(gè)100,也就是augend參數(shù)是100,兩者相加123并返回。
有沒(méi)有發(fā)現(xiàn)make_adder這個(gè)函數(shù),里面定義了一個(gè)閉包函數(shù),但是make_adder返回的return卻是里面的這個(gè)閉包函數(shù)名,這就是閉包函數(shù)的特征。
再看一個(gè)Python閉包的例子:
def hellocounter (name): count=[0] def counter(): count[0]+=1 print('Hello,',name,',',count[0],' access!') return counter hello = hellocounter('ma6174') hello() hello() hello()
運(yùn)行結(jié)果:
tantengdeMacBook-Pro:learn-python tanteng$ python3 closure.py Hello, ma6174 , 1 access! Hello, ma6174 , 2 access! Hello, ma6174 , 3 access!
使用閉包實(shí)現(xiàn)了計(jì)數(shù)器的功能,這也是閉包的一個(gè)特點(diǎn),返回的值保存在了內(nèi)存中,所以可以實(shí)現(xiàn)計(jì)數(shù)功能。
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
將自己的數(shù)據(jù)集制作成TFRecord格式教程
今天小編就為大家分享一篇將自己的數(shù)據(jù)集制作成TFRecord格式教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Tensorflow限制CPU個(gè)數(shù)實(shí)例
今天小編就為大家分享一篇Tensorflow限制CPU個(gè)數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python基于遞歸和非遞歸算法求兩個(gè)數(shù)最大公約數(shù)、最小公倍數(shù)示例
這篇文章主要介紹了Python基于遞歸和非遞歸算法求兩個(gè)數(shù)最大公約數(shù)、最小公倍數(shù),涉及Python遞歸算法、流程循環(huán)控制進(jìn)行數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-05-05在Python中調(diào)用Ping命令,批量IP的方法
今天小編就為大家分享一篇在Python中調(diào)用Ping命令,批量IP的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01刪除目錄下相同文件的python代碼(逐級(jí)優(yōu)化)
讓我們來(lái)分析一下這個(gè)問(wèn)題:首先,文件個(gè)數(shù)非常多,手工查找是不現(xiàn)實(shí)的,再說(shuō),單憑我們?nèi)庋?,在幾千張圖片里面找到完全相同的難度也是很大的2012-05-05python 獲取utc時(shí)間轉(zhuǎn)化為本地時(shí)間的方法
今天小編就為大家分享一篇python 獲取utc時(shí)間轉(zhuǎn)化為本地時(shí)間的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12