第11章-迭代器、生成器與裝飾器_第1頁
第11章-迭代器、生成器與裝飾器_第2頁
第11章-迭代器、生成器與裝飾器_第3頁
第11章-迭代器、生成器與裝飾器_第4頁
第11章-迭代器、生成器與裝飾器_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第11章迭代器、生成器和裝飾器本章內(nèi)容迭代器生成器裝飾器11.1迭代器什么是可迭代對象什么是迭代器迭代器的本質(zhì)StopIteration異常自定義迭代器內(nèi)置迭代器工具11.1.1什么是可迭代對象如果給定一個list或tuple,可以通過for循環(huán)來遍歷這個list或tuple,這種遍歷稱為迭代(Iteration),被遍歷的list或tuple被稱為可迭代對象。除了list或tuple外,還有很多可以被迭代的對象,包括str、set、tuple等。11.1.2什么是迭代器迭代器是一個可以記住遍歷的位置的對象。迭代器對象從可迭代對象的第一個元素開始訪問,直到所有的元素被訪問完結(jié)束。迭代器有兩個基本的方法iter()和next()。其中iter()用于創(chuàng)建迭代器對象,next()用于遍歷對象的元素。在遍歷字符串,列表或元組對象時經(jīng)常會用到迭代器。11.1.3迭代器的本質(zhì)理解可迭代對象的本質(zhì)可迭代對象的本質(zhì)就是可以向我們提供一個迭代器,幫助我們對其進行迭代遍歷。獲取可迭代對象的迭代器

通過iter()函數(shù)能夠得到一個可迭代對象的迭代器通過next()函數(shù)多次提取迭代器中的數(shù)據(jù)11.1.4

StopIteration異常其實就是一種告知迭代結(jié)束的標(biāo)志而已添加try...except可以解決問題11.1.3自定義迭代器通過定義個實現(xiàn)迭代器協(xié)議方法的類,即可自定義一個迭代器。11.1.4內(nèi)置迭代器工具Python已經(jīng)內(nèi)置了一個產(chǎn)生迭代器的函數(shù)

iter()。另外在itertools模塊中,也提供了豐富的迭代器工具。itertools模塊包含創(chuàng)建有效迭代器的函數(shù),可以用各種方式對數(shù)據(jù)進

行循環(huán)操作,此模塊中的所有函數(shù)返回的迭

代器都可以與for循環(huán)語句以及其他包含迭代器(如生成器和生成器表達式)的函數(shù)聯(lián)合

使用。11.2生成器使用生成器,可以生成一個值的序列用于迭代,并且這個值的序列不是一次生成的,而是使用一個,再生成一個,的確可以使程序節(jié)約大量內(nèi)存。在Python中,使用了yield的函數(shù)被稱為生成器。與普通函數(shù)不同的是,生成器將返回一個迭代器的函數(shù),而且生成器只能用于迭代操作??梢?,生成器是一種特殊的迭代器。在調(diào)用生成器運行的過程中,每次遇到y(tǒng)ield時函數(shù)會暫停并保存當(dāng)前所有的運行信息,返回yield的值。并在下一次執(zhí)行next()方法時從當(dāng)前位置繼續(xù)運行。11.3裝飾器什么是裝飾器裝飾函數(shù)裝飾類11.3.1什么是裝飾器當(dāng)寫了一個很長的函數(shù)后,發(fā)現(xiàn)還需要添加一些功能,這時需要從開始來讀已經(jīng)寫好的代碼,在更改時需要大量的時間。通過裝飾器就可以輕松解決這個問題。裝飾器的表示語法就是在函數(shù)或者類之前添加“@”符號。例如:@disp_ffdef

dd_ff():pass11.3.2裝飾函數(shù)用裝飾器裝飾函數(shù),首先要定義裝飾器,然后用定義的裝

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論