Python開(kāi)發(fā)生成器和迭代器的區(qū)別是什么

這篇文章主要介紹“Python開(kāi)發(fā)生成器和迭代器的區(qū)別是什么”,在日常操作中,相信很多人在Python開(kāi)發(fā)生成器和迭代器的區(qū)別是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Python開(kāi)發(fā)生成器和迭代器的區(qū)別是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

淮上網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),淮上網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為淮上近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的淮上做網(wǎng)站的公司定做!

Python開(kāi)發(fā)生成器和迭代器的區(qū)別?迭代器是一個(gè)更抽象的概念,任何對(duì)象;迭代器對(duì)象,它在容器中逐個(gè)訪問(wèn)容器內(nèi)元素,next()也是 python 的內(nèi)置函數(shù)。


迭代器是一個(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è)訪問(wèn)容器內(nèi)元素,next()也是python的內(nèi)置函數(shù) 。在沒(méi)有后續(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 異常。


術(shù)語(yǔ)的解釋:


1、迭代器協(xié)議:對(duì)象需要提供next()方法,它要么返回迭代中的下一項(xiàng),要么就引起一個(gè)StopIteration異常,以終止迭代。


2、可迭代對(duì)象:實(shí)現(xiàn)了迭代器協(xié)議對(duì)象。list、tuple、dict都是Iterable(可迭代對(duì)象),但不是Iterator(迭代器對(duì)象)。但可以使用內(nèi)建函數(shù)iter() ,把這些都變成Iterable可迭代器對(duì)象。


3、for item in Iterable 循環(huán)的本質(zhì)就是先通過(guò)iter()函數(shù)獲取可迭代對(duì)象Iterable的迭代器,然后對(duì)獲取到的迭代器不斷調(diào)用next()方法來(lái)獲取下一個(gè)值并將其賦值給item,當(dāng)遇到StopIteration的異常后循環(huán)結(jié)束

到此,關(guān)于“Python開(kāi)發(fā)生成器和迭代器的區(qū)別是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

當(dāng)前文章:Python開(kāi)發(fā)生成器和迭代器的區(qū)別是什么
轉(zhuǎn)載源于:http://muchs.cn/article12/gjspdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)移動(dòng)網(wǎng)站建設(shè)、外貿(mào)建站、標(biāo)簽優(yōu)化網(wǎng)站排名、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)