python生成器如何實現(xiàn)
python生成器實現(xiàn)方法:
生成器和迭代器的功能非常相似,它也會提供__next__()方法,這意味著程序同樣可調(diào)用內(nèi)置的next()函數(shù)來獲取生成器的下一個值,也可使用for循環(huán)來遍歷生成器。
生成器與迭代器的區(qū)別在于,迭代器通常是先定義一個迭代器類,然后通過創(chuàng)建實例來創(chuàng)建迭代器;而生成器則是先定義一個包含yield語句的函數(shù),然后通過調(diào)用該函數(shù)來創(chuàng)建生成器。
生成器是一種非常優(yōu)秀的語法,Python使用生成器可以讓程序變得很優(yōu)雅。
創(chuàng)建生成器
創(chuàng)建生成器需要兩步操作:
定義一個包含yield語句的函數(shù)。
調(diào)用第1步創(chuàng)建的函數(shù)得到生成器。
下面程序使用生成器來定義一個差值遞增的數(shù)列。程序先定義了一個包含yield語句的函數(shù):
deftest(val,step):
print("--------函數(shù)開始執(zhí)行------")
cur=0
#遍歷0~val
foriinrange(val):
#cur添加i*step
cur+=i*step
yieldcur
生成器的方法
當生成器運行起來之后,開發(fā)者還可以為生成器提供值,通過這種方式讓生成器與“外部程序”動態(tài)地交換數(shù)據(jù)。
為了實現(xiàn)生成器與“外部程序”動態(tài)地交換數(shù)據(jù),需要借助于生成器的send()方法,該方法的功能與前面示例中所使用的next()函數(shù)的功能非常相似,它們都用于獲取生成器所生成的下一個值,并將生成器“凍結”在yield語句處;但send()方法可以接收一個參數(shù),該參數(shù)值會被發(fā)送給生成器函數(shù)。
在生成器函數(shù)內(nèi)部,程序可通過yield表達式來獲取send()方法所發(fā)送的值,這意味著此時程序應該使用一個變量來接收yield語句的值。如果程序依然使用next()函數(shù)來獲取生成器所生成的下一個值,那么yield語句返回None。
對于上面詳細的描述,歸納起來就是兩句話:
外部程序通過send()方法發(fā)送數(shù)據(jù)。
生成器函數(shù)使用yield語句接收收據(jù)。
以上內(nèi)容為大家介紹了python培訓之生成器如何實現(xiàn),希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

猜你喜歡LIKE
相關推薦HOT
更多>>
pythonfor循環(huán)是什么
pythonfor循環(huán)是什么在做遍歷的時候,對于一些數(shù)據(jù)的反復循環(huán)執(zhí)行,我們會用到for循環(huán)的語句。可以說這是新手入門必學的語句之一,在很多基礎循...詳情>>
2023-11-13 07:46:36
pythoncontextmanager()的轉(zhuǎn)換
python中contextmanager()的轉(zhuǎn)換1、說明當發(fā)出請求時,requests庫會在將請求實際發(fā)送到目標服務器之前準備該請求。請求準備包括像驗證頭信息和...詳情>>
2023-11-13 06:34:35
python使用items()遍歷鍵值對
python使用items()遍歷鍵值對字典可以用來存儲各種方式的信息,所以有很多方式可以通過字典的所有鍵值對、鍵或值。說明1、即使通過字典,鍵值對...詳情>>
2023-11-13 04:24:15
python實例方法中self的作用
python實例方法中self的作用說明1、無論是創(chuàng)建類的構造方法還是實例方法,最少要包含一個參數(shù)self。2、通過實例的self參數(shù)與對象進行綁定,程序...詳情>>
2023-11-13 03:46:48熱門推薦
python實現(xiàn)WSGI的框架
沸pythonfor循環(huán)是什么
熱python-=是什么意思
熱python打開文本文件有哪些方法?
新pythoncontextmanager()的轉(zhuǎn)換
pythonre是什么?
pythondecimal是什么
python列表追加元素出錯的解決
python使用loguru操作日志
python使用items()遍歷鍵值對
pythonvim中有哪些對象
python實例方法中self的作用
pythonin和is的區(qū)分
pythonos.path.join()函數(shù)的使用
技術干貨







快速通道 更多>>
-
課程介紹
點擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學習費用
了解課程價格 -
優(yōu)惠活動
領取優(yōu)惠券 -
學習資源
領3000G教程 -
師資團隊
了解師資團隊 -
實戰(zhàn)項目
獲取項目源碼 -
開班地區(qū)
查看來校路線