日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python生成器yield_python 生成器yield的总结

發(fā)布時間:2025/3/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python生成器yield_python 生成器yield的总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

(2)生成器是可以迭代的,但是只可以讀取它一次。因為用的時候才生成,比如a = (x*x for x in range(3))。!!!!注意這里是小括號而不是方括號。

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

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

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

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

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

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

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

(10)第一次調(diào)用時候必須先next()或send(),否則會報錯,send后之所以為None是因為這時候沒有上一個yield,所以也可以認為next()等同于send(None)

總結(jié)

以上是生活随笔為你收集整理的python生成器yield_python 生成器yield的总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。