久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

python 生成器yield的總結(jié)

 小豬窩969 2018-11-27

 (1):通常的for..in...循環(huán)中,,in后面是一個(gè)數(shù)組,,這個(gè)數(shù)組就是一個(gè)可迭代對(duì)象,,類似的還有鏈表,,字符串,文件,。他可以是a = [1,2,3],,也可以是a = [x*x for x in range(3)],。

它的缺點(diǎn)也很明顯,就是所有數(shù)據(jù)都在內(nèi)存里面,,如果有海量的數(shù)據(jù),,將會(huì)非常耗內(nèi)存。

 ?。?)生成器是可以迭代的,,但是只可以讀取它一次。因?yàn)橛玫臅r(shí)候才生成,,比如a = (x*x for x in range(3)),。!!!!注意這里是小括號(hào)而不是方括號(hào)。

 ?。?)生成器(generator)能夠迭代的關(guān)鍵是他有next()方法,,工作原理就是通過(guò)重復(fù)調(diào)用next()方法,直到捕獲一個(gè)異常,。

 ?。?)帶有yield的函數(shù)不再是一個(gè)普通的函數(shù),而是一個(gè)生成器generator,,可用于迭代

 ?。?)yield是一個(gè)類似return 的關(guān)鍵字,迭代一次遇到y(tǒng)ield的時(shí)候就返回yield后面或者右面的值,。而且下一次迭代的時(shí)候,,從上一次迭代遇到的yield后面的代碼開(kāi)始執(zhí)行

  (6)yield就是return返回的一個(gè)值,,并且記住這個(gè)返回的位置,。下一次迭代就從這個(gè)位置開(kāi)始。

 ?。?)帶有yield的函數(shù)不僅僅是只用于for循環(huán),,而且可用于某個(gè)函數(shù)的參數(shù),只要這個(gè)函數(shù)的參數(shù)也允許迭代參數(shù),。

 ?。?)send()和next()的區(qū)別就在于send可傳遞參數(shù)給yield表達(dá)式,這時(shí)候傳遞的參數(shù)就會(huì)作為yield表達(dá)式的值,,而yield的參數(shù)是返回給調(diào)用者的值,,也就是說(shuō)send可以強(qiáng)行修改上一個(gè)yield表達(dá)式值。

 ?。?)send()和next()都有返回值,,他們的返回值是當(dāng)前迭代遇到的yield的時(shí)候,yield后面表達(dá)式的值,其實(shí)就是當(dāng)前迭代yield后面的參數(shù),。

 ?。?0)第一次調(diào)用時(shí)候必須先next()或send(),否則會(huì)報(bào)錯(cuò),send后之所以為None是因?yàn)檫@時(shí)候沒(méi)有上一個(gè)yield,,所以也可以認(rèn)為next()等同于send(None)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多