Python函數(shù)中的函數(shù)(閉包)用法實(shí)例
本文實(shí)例講述了Python閉包的用法。分享給大家供大家參考,具體如下:
Python函數(shù)中也可以定義函數(shù),也就是閉包。跟js中的閉包概念其實(shí)差不多,舉個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中一切皆對象,執(zhí)行p(100),其中p是make_adder(23)這個對象,也就是addend這個參數(shù)是23,你又傳入了一個100,也就是augend參數(shù)是100,兩者相加123并返回。
有沒有發(fā)現(xiàn)make_adder這個函數(shù),里面定義了一個閉包函數(shù),但是make_adder返回的return卻是里面的這個閉包函數(shù)名,這就是閉包函數(shù)的特征。
再看一個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ù)器的功能,這也是閉包的一個特點(diǎn),返回的值保存在了內(nèi)存中,所以可以實(shí)現(xiàn)計(jì)數(shù)功能。
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python geopandas讀取、創(chuàng)建shapefile文件的方法
shapefile是GIS中非常重要的一種數(shù)據(jù)類型,在ArcGIS中被稱為要素類(Feature Class),主要包括點(diǎn)(point)、線(polyline)和多邊形(polygon),本文重點(diǎn)給大家介紹python geopandas讀取、創(chuàng)建shapefile文件的方法,需要的朋友參考下吧2021-06-06
Python實(shí)現(xiàn)去除列表中重復(fù)元素的方法總結(jié)【7種方法】
今天小編就為大家分享一篇關(guān)于Python實(shí)現(xiàn)去除列表中重復(fù)元素的方法總結(jié)【7種方法】,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
python數(shù)據(jù)分析之將爬取的數(shù)據(jù)保存為csv格式
Python內(nèi)置了CSV模塊,可直接通過該模塊實(shí)現(xiàn)csv文件的讀寫操作,在web應(yīng)用中導(dǎo)出數(shù)據(jù)是比較常見操作,下面這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)分析之將爬取的數(shù)據(jù)保存為csv格式的相關(guān)資料,需要的朋友可以參考下2022-06-06
Python實(shí)現(xiàn)畫箱線圖展示數(shù)據(jù)分布情況
這篇文章主要介紹了Python實(shí)現(xiàn)畫箱線圖展示數(shù)據(jù)分布情況,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07

