Python 函式(迭代器 生成器)

2022-09-05 06:00:14 字數 1155 閱讀 2291

只要能被for迴圈的資料型別,就一定擁有__iter__方法,for迴圈其實就是在使用迭代器

只要是迭代器就一定可以迭代

可迭代物件.__iter__() == 迭代器

迭代器中的__next__()方法可以乙個乙個的獲取值

迭代器物件可以使用常規for語句進行遍歷:

list=[1,2,3,4]

it = iter(list) #

建立迭代器物件

for x in

it:

print (x, end="

")

執行以上程式,輸出結果如下:

1 2 3 4

生成器函式本質上就是我們自己寫的函式

跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。

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

yield關鍵字和return用法相同,只要含有yield關鍵字的函式,都是生成器函式,yield需要寫在函式內部,不可以和return同時使用,生成器函式執行後會得到乙個生成器作為返回值

def

generator():

print(1)

yield'a

'#生成器函式 : 執行之後會得到乙個生成器作為返回值

ret =generator()

print

(ret)

print(ret.__next__())

#

娃哈哈%i

defwahaha():

for i in range(2000000):

yield

'娃哈哈%s

'%icount =0

for i in

g: count +=1

print

(i)

if count > 50:

break

for i in

g: count +=1

print

(i)

if count > 100:

break

函式 生成器 迭代器

1.函式 1 函式的好處就是能將固定功能的模組封裝起來,在需要多次實現這個功能的時候就呼叫函式避免 的重複書寫,過於冗長 2 傳參 依次往後放這是規定 num,args,a 2,kwargs 中間兩個交換位置不影響 位置引數 引數關鍵字引數 引數 3 返回值函式執行沒遇到return返回值一定為no...

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...