淺談Python中的閉包
Python中的閉包的概念, 在我看來(lái), 就相當(dāng)于在某個(gè)函數(shù)中又定義了一個(gè)或多個(gè)函數(shù), 內(nèi)層函數(shù)定義了具體的實(shí)現(xiàn)方式, 而外層返回的就是這個(gè)實(shí)現(xiàn)方式, 但并沒(méi)有執(zhí)行, 除非外層函數(shù)調(diào)用的內(nèi)層的實(shí)現(xiàn)方法被執(zhí)行了。至于這個(gè)怎么執(zhí)行, 看下面的例子就知道了
比如:
def sum_outer(x, y):
def sum_in(z):
return x + y - z;
return sum_in #注意, 這里返回的不是sum_in() 只是sum_in的函數(shù)名
m = sum_outer(3, 4) #3, 4 分別對(duì)應(yīng)x, y,這里的m返回的也只是函數(shù)sum_in的定義,<function __main__.sum_in>
print m(5) # m對(duì)應(yīng)z, 這個(gè)時(shí)候才是真正sum_in執(zhí)行的時(shí)候
看起來(lái)就像通過(guò)sum_outer 調(diào)用了內(nèi)層的sum_in函數(shù), 多了層代理
其中一種應(yīng)用場(chǎng)景就是可以根據(jù)不同的參數(shù),使用相同的實(shí)現(xiàn)去返回對(duì)應(yīng)不同的結(jié)果,比如, 根據(jù)不同的配置獲取不同的數(shù)據(jù)庫(kù)連接, 或者要求在驗(yàn)證字符串長(zhǎng)度時(shí), 可以根據(jù)不同的最大長(zhǎng)度驗(yàn)證(外層傳遞最大長(zhǎng)度, 內(nèi)層傳遞驗(yàn)證的字符串)。
在抽象化一點(diǎn), 外層定義了一個(gè)環(huán)境, 內(nèi)層則是在該環(huán)境中的要做的事情, 但這個(gè)事情還沒(méi)做,
只是要做。當(dāng)真正需要做的時(shí)候到這個(gè)環(huán)境中去做了就好了(外層的返回結(jié)果(m)執(zhí)行內(nèi)層的函數(shù)sum_in)
實(shí)際上, 直接給函數(shù)傳遞需要的所有參數(shù), 直接返回結(jié)果, 如上面的sum_outer和sum_in, 直接通過(guò)
def sum(x,y,z): return x + y - z
不就結(jié)了嗎,為社么還要閉包這個(gè)實(shí)現(xiàn)呢? 到目前來(lái)說(shuō), 只能看出他們是兩種不同的實(shí)現(xiàn)方式, 更多的區(qū)別, 還有待日后的學(xué)習(xí)體驗(yàn)
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
TENSORFLOW變量作用域(VARIABLE SCOPE)
這篇文章主要介紹了TENSORFLOW變量作用域(VARIABLE SCOPE),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Python基礎(chǔ)之?dāng)?shù)據(jù)類型詳解
python的數(shù)值類型包括整數(shù),浮點(diǎn)數(shù),復(fù)數(shù),集合,小數(shù)和分?jǐn)?shù),布爾值.它們都是python中的數(shù)值類型.如果是有過(guò)其他語(yǔ)言編寫經(jīng)驗(yàn)的人,一定很好奇,浮點(diǎn)數(shù)和小數(shù)的區(qū)別是什么?文中有非常詳細(xì)的介紹,需要的朋友可以參考下2021-06-06
pandas map(),apply(),applymap()區(qū)別解析
這篇文章主要介紹了pandas map(),apply(),applymap()區(qū)別解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
解決使用PyCharm時(shí)無(wú)法啟動(dòng)控制臺(tái)的問(wèn)題
今天小編就為大家分享一篇解決使用PyCharm時(shí)無(wú)法啟動(dòng)控制臺(tái)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
python編程項(xiàng)目中線上問(wèn)題排查與解決
因?yàn)闃I(yè)務(wù)上的設(shè)計(jì)存在問(wèn)題,導(dǎo)致數(shù)據(jù)庫(kù)表總是被鎖,而且是不定期的鎖定,導(dǎo)致服務(wù)器運(yùn)行異常,今天就來(lái)跟大家說(shuō)說(shuō)該如何避免這種問(wèn)題2021-11-11
Python實(shí)現(xiàn)Word文檔轉(zhuǎn)換Markdown的示例
這篇文章主要介紹了Python實(shí)現(xiàn)Word文檔轉(zhuǎn)換Markdown的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12
python 數(shù)據(jù)的清理行為實(shí)例詳解
這篇文章主要介紹了python 數(shù)據(jù)的清理行為實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07
Python如何實(shí)現(xiàn)轉(zhuǎn)換URL詳解
這篇文章主要介紹了Python如何實(shí)現(xiàn)轉(zhuǎn)換URL詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07

