只要能被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同時使用,生成器函式執行後會得到乙個生成器作為返回值
defgenerator():
print(1)
yield'a
'#生成器函式 : 執行之後會得到乙個生成器作為返回值
ret =generator()
(ret)
print(ret.__next__())
#娃哈哈%i
defwahaha():
for i in range(2000000):
yield
'娃哈哈%s
'%icount =0
for i in
g: count +=1
(i)
if count > 50:
break
for i in
g: count +=1
(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語句時,程式就會自動呼叫即將被處理的物件的可...