1. 程式人生 > >python3 函數叠代器

python3 函數叠代器

ret 當前位置 數據 當前 += AS begin elf top

叠代器協議:

叠代器協議,是指對象(實例)能夠使用next函數獲取下一項數據,在沒有下一項數據之前觸發一個StopIteration異常來終止叠代


next(it) 對應__next__(self)方法

iter(obj) 對應__iter__(self)方法,通常返回一個可叠代對象



class odd:

def __init__(self,begin,end):

self.beg = begin

self.end = end

self.cur = begin #數據的當前位置

def __next__(self):

"""print("next被調用")"""

if self.cur >= self.end:

raise StopIteration

#此判斷獲取一個奇數,

if self.cur % 2 == 0:

self.cur += 1


r = self.cur

self.cur += 1 #步長

return r

def __iter__(self):

"""__iter__被調用,返回自己作為叠代器,每次返回一個可叠代對象,調用一次__iter__"""

self.cur = self.beg

return self


o = odd(5,10)

for x in o:

print(x)


print([x for x in o])


python3 函數叠代器