淺談Python中的閉包
Python中的閉包的概念, 在我看來, 就相當(dāng)于在某個函數(shù)中又定義了一個或多個函數(shù), 內(nèi)層函數(shù)定義了具體的實現(xiàn)方式, 而外層返回的就是這個實現(xiàn)方式, 但并沒有執(zhí)行, 除非外層函數(shù)調(diào)用的內(nèi)層的實現(xiàn)方法被執(zhí)行了。至于這個怎么執(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 分別對應(yīng)x, y,這里的m返回的也只是函數(shù)sum_in的定義,<function __main__.sum_in> print m(5) # m對應(yīng)z, 這個時候才是真正sum_in執(zhí)行的時候
看起來就像通過sum_outer 調(diào)用了內(nèi)層的sum_in函數(shù), 多了層代理
其中一種應(yīng)用場景就是可以根據(jù)不同的參數(shù),使用相同的實現(xiàn)去返回對應(yīng)不同的結(jié)果,比如, 根據(jù)不同的配置獲取不同的數(shù)據(jù)庫連接, 或者要求在驗證字符串長度時, 可以根據(jù)不同的最大長度驗證(外層傳遞最大長度, 內(nèi)層傳遞驗證的字符串)。
在抽象化一點, 外層定義了一個環(huán)境, 內(nèi)層則是在該環(huán)境中的要做的事情, 但這個事情還沒做,
只是要做。當(dāng)真正需要做的時候到這個環(huán)境中去做了就好了(外層的返回結(jié)果(m)執(zhí)行內(nèi)層的函數(shù)sum_in)
實際上, 直接給函數(shù)傳遞需要的所有參數(shù), 直接返回結(jié)果, 如上面的sum_outer和sum_in, 直接通過
def sum(x,y,z): return x + y - z
不就結(jié)了嗎,為社么還要閉包這個實現(xiàn)呢? 到目前來說, 只能看出他們是兩種不同的實現(xiàn)方式, 更多的區(qū)別, 還有待日后的學(xué)習(xí)體驗
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
Python爬蟲抓取手機(jī)APP的傳輸數(shù)據(jù)
大多數(shù)APP里面返回的是json格式數(shù)據(jù),或者一堆加密過的數(shù)據(jù) 。這里以超級課程表APP為例,抓取超級課程表里用戶發(fā)的話題2016-01-01python+requests接口壓力測試500次,查看響應(yīng)時間的實例
這篇文章主要介紹了python+requests接口壓力測試500次,查看響應(yīng)時間的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04python實現(xiàn)PolynomialFeatures多項式的方法
這篇文章主要介紹了python實現(xiàn)PolynomialFeatures多項式的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Iconfont(矢量圖標(biāo))+iconmoon(圖標(biāo)svg互轉(zhuǎn))配合javascript實現(xiàn)社交分享系統(tǒng)
這篇文章主要介紹了Iconfont(矢量圖標(biāo))+iconmoon(圖標(biāo)svg互轉(zhuǎn))配合javascript實現(xiàn)社交分享系統(tǒng),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04PyTorch基礎(chǔ)之torch.nn.CrossEntropyLoss交叉熵?fù)p失
這篇文章主要介紹了PyTorch基礎(chǔ)之torch.nn.CrossEntropyLoss交叉熵?fù)p失講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02python開發(fā)之字符串string操作方法實例詳解
這篇文章主要介紹了python開發(fā)之字符串string操作方法,以實例形式較為詳細(xì)的分析了Python針對字符串的轉(zhuǎn)義、連接、換行、輸出等操作技巧,需要的朋友可以參考下2015-11-11