Python 迭代器 生成器和裝飾器 簡要學習

2021-10-10 07:21:05 字數 2166 閱讀 7998

三、生成器

四、 裝飾器

迭代是python的強大功能之一,是訪問集合元素的一種方式。

迭代器是乙個可以記住遍歷位置的物件,,在遍歷字串、列表、或者元組的時候非常有用。

生成器是函式中包含yield語句的一類特殊函式。

裝飾器的靈活性很強,可以為乙個物件新增新的功能,或者給函式插入相關的功能。

給定乙個list或者tuple,可以通過for迴圈來遍歷這個list或者tuple,這種遍歷稱為迭代(iteration),被遍歷的list或者tuple稱為可迭代物件。除了list或者tuple外,還有str,set,tuple 等作為迭代物件。

迭代器是乙個可以記住遍歷位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。

迭代器有兩個基本方法:iter()和 next()。其中iter( )方法用來建立迭代器物件;next()用來遍歷物件的元素。在遍歷字串、列表或元組物件時,經常會用到迭代器。

list=[

1,2,

3,4,

5]x =iter

(list

)#建立迭代器物件

print

(next

(x))

print

(next

(x))

print

(next

(x))

print

(next

(x))

print

(next

(x))

e:\anconda\python.exe "c:/users/mr-li/desktop/program practice/1.py"12

345

也可以用for迴圈來進行遍歷:

list=[

1,2,

3,4,

5]x =iter

(list

)for i in x:

print

(i,end=

' ')

e:\anconda\python.exe "c:/users/mr-li/desktop/program practice/1.py"12

345 process finished with exit code 0

使用生成器可以生成乙個值的序列用於迭代,並且這個值得序列不是一次生成的,而是使用乙個在生成乙個,可以使程式節約大量記憶體。

在python中,使用了yield的函式被稱為生成器,與普通函式不同的是,生成器將返回乙個迭代器的函式,並且生成器只能用於迭代操作。可見,生成器是一種特殊的迭代器。

在呼叫生成器執行的過程中,每次遇到yield時,函式就會暫停,並儲存當前所有的執行資訊,返回yield的值,在下一次執行next( )方法時,會從當前位置繼續執行。

list=[

[1,2

],[3

,4],

[5,6

],[7

,8]]

#建立乙個巢狀列表

defxunhuan

(list):

#建立生成器

for aa in

list

:for bb in aa:

yield bb

#與 return 返回值不同的是,yield語句沒產生乙個值,函式就會暫停,返回yield值,等待被重新喚醒後從當前位置繼續執行。

for nn in xunhuan(

list):

print

(nn,end=「 」)

e:\anconda\python.exe "c:/users/mr-li/desktop/program practice/1.py"12

3456

78 process finished with exit code 0

裝飾器是一種增加函式或類的功能的方法,可以快速的給不同的函式或者類插入相同的功能。

當寫了乙個很長的函式後,發現還需要新增一些功能。更改會耗時很長,通過裝飾器就可以輕鬆解決問題。

可以參考這個裝飾器解釋

python迭代器生成器和裝飾器

7.迭代器和生成器區別 迭代器是乙個抽象概念,任何物件,它的next方法和iter方法返回自己本身。iter是內建函式,iter 會返回乙個定義了next方法的迭代器物件,class mynumbers defiter self self.a 1 return self defnext self x...

Python生成器 迭代器 裝飾器

python生成器 迭代器 裝飾器 最簡單的生成器 g x x for x in range 10 for i in g print i函式方法實現稍複雜的生成器 def fib max n,a,b 0,1,1 while nyield b a,b b,a b n 1 for n in fib 6 ...

python 裝飾器,生成器,迭代器

示例1 無參無返回值 def shuai func 示例2 帶參函式的裝飾器 帶參函式的裝飾器 示例3 帶參有返回值的裝飾器 def zhuangshiqi func 資料量非常小,記憶體占用不大 l i for i in range 10 資料量特別大時,會造成記憶體占用突然增大 l2 i for...