歡迎來(lái)到培訓(xùn)無(wú)憂網(wǎng)!

全國(guó)切換

咨詢熱線 400-001-5729

位置:培訓(xùn)無(wú)憂網(wǎng) > 新聞資訊 > 電腦/IT > python培訓(xùn) >  Python培訓(xùn)開發(fā)生成器和迭代器有什么區(qū)別?

Python培訓(xùn)開發(fā)生成器和迭代器有什么區(qū)別?

來(lái)源:elsolbar.com 發(fā)布人:星星

2022-01-04 14:42:17|已瀏覽:451次

生成器和迭代器有什么區(qū)別

       迭代器是一個(gè)更抽象的概念,任何對(duì)象,如果它的類有 next 方法和iter 方法返回自己本身,對(duì)于 string、list、dict、tuple 等這類容器對(duì)象,使用for循環(huán)遍歷是很方便的。在后臺(tái) for 語(yǔ)句對(duì)容器對(duì)象調(diào)用iter()函數(shù),iter()是python的內(nèi)置函數(shù)。iter()會(huì)返回一個(gè)定義了next()方法的迭代器對(duì)象,它在容器中逐個(gè)訪問容器內(nèi)元素,next()也是python的內(nèi)置函數(shù) 。在沒有后續(xù)元素時(shí) ,next()會(huì)拋出一StopIteration異常。

       生成器(Generator)是創(chuàng)建迭代器的簡(jiǎn)單而強(qiáng)大的工具。它們寫起來(lái)就像是正規(guī)的函數(shù),只是在需要返回?cái)?shù)據(jù)的時(shí)候使用 yield 語(yǔ)句。每次next()被調(diào)用時(shí),生成器會(huì)返回它脫離的位置(它記憶語(yǔ)句最后一次執(zhí)行的位置和所有的數(shù)據(jù)值)區(qū)別:生成器能做到迭代器能做的所有事,而且因?yàn)樽詣?dòng)創(chuàng)建了iter()和next()方法,生成器顯得特別簡(jiǎn)潔,而且生成器也是高效的,使用生成器表達(dá)式取代列表解析可以同時(shí)節(jié)省內(nèi)存。除了創(chuàng)建和保存程序狀態(tài)的自動(dòng)方法,當(dāng)發(fā)生器終結(jié)時(shí),還會(huì)自動(dòng)拋出 StopIteration 異常。

       本文由培訓(xùn)無(wú)憂網(wǎng)達(dá)內(nèi)教育專屬課程顧問整理發(fā)布,更多Python開發(fā)培訓(xùn)課程歡迎關(guān)注培訓(xùn)無(wú)憂網(wǎng)Python開發(fā)頻道或添加老師微信:15033336050

      注:尊重原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處和鏈接 http://elsolbar.com/news-id-12316.html 違者必究!部分文章來(lái)源于網(wǎng)絡(luò)由培訓(xùn)無(wú)憂網(wǎng)編輯部人員整理發(fā)布,內(nèi)容真實(shí)性請(qǐng)自行核實(shí)或聯(lián)系我們,了解更多相關(guān)資訊請(qǐng)關(guān)注python培訓(xùn)頻道查看更多,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050

留下你的信息,課程顧問老師會(huì)一對(duì)一幫助你規(guī)劃更適合你的專業(yè)課程!
  • 姓名:

  • 手機(jī):

  • 地區(qū):

  • 想學(xué)什么:

  • 培訓(xùn)無(wú)憂網(wǎng)
免 費(fèi) 申 請(qǐng) 試 聽
提交申請(qǐng),《培訓(xùn)無(wú)憂網(wǎng)》課程顧問老師會(huì)一對(duì)一幫助你規(guī)劃更適合你的專業(yè)課程!