国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python 閉包的理解

Binguner / 1510人閱讀

摘要:中的閉包的概念,在我看來,就相當(dāng)于在某個(gè)函數(shù)中又定義了一個(gè)或多個(gè)函數(shù),內(nèi)層函數(shù)定義了具體的實(shí)現(xiàn)方式,而外層返回的就是這個(gè)實(shí)現(xiàn)方式,但并沒有執(zhí)行,除非外層函數(shù)調(diào)用的內(nèi)層的實(shí)現(xiàn)方法被執(zhí)行了。

Python中的閉包的概念, 在我看來, 就相當(dāng)于在某個(gè)函數(shù)中又定義了一個(gè)或多個(gè)函數(shù), 內(nèi)層函數(shù)定義了具體的實(shí)現(xiàn)方式, 而外層返回的就是這個(gè)實(shí)現(xiàn)方式, 但并沒有執(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 分別對應(yīng)x, y,這里的m返回的也只是函數(shù)sum_in的定義,
 print m(5) # m對應(yīng)z, 這個(gè)時(shí)候才是真正sum_in執(zhí)行的時(shí)候

看起來就像通過sum_outer 調(diào)用了內(nèi)層的sum_in函數(shù), 多了層代理

其中一種應(yīng)用場景就是可以根據(jù)不同的參數(shù),使用相同的實(shí)現(xiàn)去返回對應(yīng)不同的結(jié)果,比如, 根據(jù)不同的配置獲取不同的數(shù)據(jù)庫連接, 或者要求在驗(yàn)證字符串長度時(shí), 可以根據(jù)不同的最大長度驗(yàn)證(外層傳遞最大長度, 內(nèi)層傳遞驗(yàn)證的字符串)。

在抽象化一點(diǎn), 外層定義了一個(gè)環(huán)境, 內(nèi)層則是在該環(huán)境中的要做的事情, 但這個(gè)事情還沒做,
只是要做。當(dāng)真正需要做的時(shí)候到這個(gè)環(huán)境中去做了就好了(外層的返回結(jié)果(m)執(zhí)行內(nèi)層的函數(shù)sum_in)

實(shí)際上, 直接給函數(shù)傳遞需要的所有參數(shù), 直接返回結(jié)果, 如上面的sum_outer和sum_in, 直接通過

def sum(x,y,z):
    return x + y - z

不就結(jié)了嗎,為社么還要閉包這個(gè)實(shí)現(xiàn)呢? 到目前來說, 只能看出他們是兩種不同的實(shí)現(xiàn)方式, 更多的區(qū)別, 還有待日后的學(xué)習(xí)體驗(yàn)


更新: 閉包最常見的應(yīng)用就是裝飾器。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/37556.html

相關(guān)文章

  • 說說Python閉包 - Closure

    摘要:閉包可以用來在一個(gè)函數(shù)與一組私有變量之間創(chuàng)建關(guān)聯(lián)關(guān)系。夾帶私貨外部變量返回的是函數(shù),帶私貨的函數(shù)支持將函數(shù)當(dāng)成對象使用的編程語言,一般都支持閉包。所以說當(dāng)你的裝飾器需要自定義參數(shù)時(shí),一般都會形成閉包。 Python中的閉包不是一個(gè)一說就能明白的概念,但是隨著你往學(xué)習(xí)的深入,無論如何你都需要去了解這么一個(gè)東西。 閉包的概念 我們嘗試從概念上去理解一下閉包。 在一些語言中,在函數(shù)中可以(嵌...

    leon 評論0 收藏0
  • PyTips 0x04 - Python 閉包與作用域

    摘要:項(xiàng)目地址閉包在計(jì)算機(jī)科學(xué)中,閉包英語,又稱詞法閉包或函數(shù)閉包,是引用了自由變量的函數(shù)。這個(gè)被引用的自由變量將和這個(gè)函數(shù)一同存在,即使已經(jīng)離開了創(chuàng)造它的環(huán)境也不例外。 項(xiàng)目地址:https://git.io/pytips 閉包(Closure) 在計(jì)算機(jī)科學(xué)中,閉包(英語:Closure),又稱詞法閉包(Lexical Closure)或函數(shù)閉包(function closures),是...

    leejan97 評論0 收藏0
  • Python

    摘要:最近看前端都展開了幾場而我大知乎最熱語言還沒有相關(guān)。有關(guān)書籍的介紹,大部分截取自是官方介紹。但從開始,標(biāo)準(zhǔn)庫為我們提供了模塊,它提供了和兩個(gè)類,實(shí)現(xiàn)了對和的進(jìn)一步抽象,對編寫線程池進(jìn)程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進(jìn)階的書, 里面介紹的基本都是高級的python用法. 對于初學(xué)python的人來說, 基礎(chǔ)大概也就夠用了...

    dailybird 評論0 收藏0
  • Python Enclosing作用域、閉包、裝飾器話聊上篇

    摘要:作用域閉包裝飾器話聊上篇聽講一切都是對象,是嗎是的,像函數(shù)也是對象。不錯(cuò)嘛這都被你看出來了,那你知道作用域的原則嗎我知道是知道可以我就是對那個(gè)作用域不是很理解。如果內(nèi)部函數(shù)引用到外層函數(shù)作用域的對象,這個(gè)內(nèi)部函數(shù)就稱為閉包。 Python Enclosing作用域、閉包、裝飾器話聊上篇 Jaglawz: 聽講Python一切都是對象,是嗎? Pylego: 是的,像函數(shù)也是對象。 Ja...

    Faremax 評論0 收藏0
  • Python函數(shù)裝飾器和閉包

    摘要:變量查找規(guī)則在中一個(gè)變量的查找順序是局部環(huán)境,閉包,全局,內(nèi)建閉包引用了自由變量的函數(shù)。閉包的作用閉包的最大特點(diǎn)是可以將父函數(shù)的變量與內(nèi)部函數(shù)綁定,并返回綁定變量后的函數(shù),此時(shí)即便生成閉包的環(huán)境父函數(shù)已經(jīng)釋放,閉包仍然存在。 導(dǎo)語:本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之函數(shù)篇的重點(diǎn)知識及個(gè)人心得,打算入門Python的朋友們可以來一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、掌握裝飾器的本質(zhì)、功...

    caozhijian 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<