最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的延遲綁定原理詳解

 更新時(shí)間:2019年10月11日 10:49:13   作者:愛哭鼻子的小憂傷  
這篇文章主要介紹了Python中的延遲綁定原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

直接看下面例子

my_ld = [lambda x:x*i for i in range(3)]
my_list = [ld(2) for ld in my_ld]
print(my_list)

本想是想通過以上代碼,輸出[0, 2, 4]的,但結(jié)果卻是[4, 4, 4]

下面說下本人對(duì)這個(gè)結(jié)果的理解:

因?yàn)镻ython解釋器,遇到lambda(或者def),只是定義了一個(gè)匿名函數(shù)對(duì)象,并保存在內(nèi)存中,只有等到調(diào)用這個(gè)匿名函數(shù)的時(shí)候,才會(huì)執(zhí)行函數(shù)內(nèi)部的代碼(x*i)。所以匿名函數(shù)中的i并不是立即引用后面循環(huán)中的i值的,而是在調(diào)用嵌套函數(shù)的時(shí)候,才會(huì)查找i的值,這個(gè)特性也就是延遲綁定。

而 for i in range(3) 是另外一個(gè)表達(dá)式,Python解釋器解釋到就會(huì)直接執(zhí)行,代碼執(zhí)行到ld(2)時(shí),循環(huán)已經(jīng)結(jié)束了,此時(shí)的i指向2 ,my_ld為包含了三個(gè)匿名函數(shù)對(duì)象的列表,所以打印my_list的結(jié)果是[4, 4, 4]。

如果我們要輸出[0, 2, 4], 可以給lambda表達(dá)式多加一個(gè)缺省參數(shù)a=i,代碼如下:

my_ld = [lambda x, a=i:x*a for i in range(3)]
my_list = [ld(2) for ld in my_ld]
print(my_list)

Python函數(shù)中的缺省參數(shù),是在Python解釋器遇到lambda a=i (或者def(a=i))時(shí),就必須初始化默認(rèn)值,此時(shí) 每循環(huán)一次,缺省參數(shù)a就需要找一次i的引用。i=0時(shí),第一個(gè)匿名函數(shù)的默認(rèn)參數(shù)值就是0,i=1時(shí),第二個(gè)匿名函數(shù)的默認(rèn)參數(shù)值就是1,以此類推。所以當(dāng)代碼執(zhí)行到ld(2)時(shí),每個(gè)匿名函數(shù)中a的默認(rèn)值都不一樣。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Sanic框架流式傳輸操作示例

    Sanic框架流式傳輸操作示例

    這篇文章主要介紹了Sanic框架流式傳輸操作,結(jié)合實(shí)例形式分析了Sanic通過流請(qǐng)求與響應(yīng)傳輸操作相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Django REST framework 分頁(yè)的實(shí)現(xiàn)代碼

    Django REST framework 分頁(yè)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Django REST framework 分頁(yè)的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 詳解Django的MVT設(shè)計(jì)模式

    詳解Django的MVT設(shè)計(jì)模式

    本章我們將介紹下經(jīng)典的軟件開發(fā)所遵循的MVC (Model-View-Controller, 模型-視圖-控制器) 設(shè)計(jì)模式以及Django的MVT設(shè)計(jì)模式(Model-View-Template)是如何遵循這種設(shè)計(jì)理念的。
    2021-04-04
  • pyecharts繪制時(shí)間輪播圖柱形圖+餅圖+玫瑰圖+折線圖

    pyecharts繪制時(shí)間輪播圖柱形圖+餅圖+玫瑰圖+折線圖

    這篇文章主要介紹了pyecharts繪制時(shí)間輪播圖柱形圖+餅圖+玫瑰圖+折線圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06
  • Python random模塊的使用示例

    Python random模塊的使用示例

    這篇文章主要介紹了Python random模塊的使用示例,幫助大家更好的理解和使用python生成隨機(jī)數(shù),感興趣的朋友可以了解下
    2020-10-10
  • python交互界面的退出方法

    python交互界面的退出方法

    今天小編就為大家分享一篇python交互界面的退出方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 淺談numpy中np.array()與np.asarray的區(qū)別以及.tolist

    淺談numpy中np.array()與np.asarray的區(qū)別以及.tolist

    這篇文章主要介紹了淺談numpy中np.array()與np.asarray的區(qū)別以及.tolist,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python面試不修改數(shù)組找出重復(fù)的數(shù)字

    Python面試不修改數(shù)組找出重復(fù)的數(shù)字

    這篇文章主要為大家介紹了不修改數(shù)組找出重復(fù)的數(shù)字Python實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 8個(gè)Python必備的PyCharm插件(附下載地址)

    8個(gè)Python必備的PyCharm插件(附下載地址)

    Python是一種廣泛使用的編程語(yǔ)言,PyCharm是最受歡迎的Python IDE之一,本文就來介紹一下8個(gè)Python必備的PyCharm插件,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Python lambda 匿名函數(shù)優(yōu)點(diǎn)和局限性深度總結(jié)

    Python lambda 匿名函數(shù)優(yōu)點(diǎn)和局限性深度總結(jié)

    這篇文章主要為大家介紹了Python lambda 匿名函數(shù)的優(yōu)點(diǎn)和局限性深度總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評(píng)論

浦县| 同心县| 正安县| 囊谦县| 行唐县| 隆化县| 阳城县| 观塘区| 平塘县| 荥阳市| 河池市| 西乌珠穆沁旗| 兴安县| 随州市| 五原县| 永仁县| 蓬莱市| 安国市| 长宁县| 响水县| 芮城县| 九龙县| 灵石县| 巫山县| 台安县| 平果县| 景宁| 利津县| 玉门市| 长兴县| 金沙县| 阳泉市| 九江市| 美姑县| 平泉县| 黄浦区| 哈密市| 宁夏| 马关县| 峨山| 河北省|