18 11 20 網路通訊 ----多工---- 攜程 ----迭代器
阿新 • • 發佈:2018-11-21
進行多工的學習 攜程 開始做一個迭代器 再做生成器 再學習攜程 迭代器就是 可以用 for 迴圈 表示的一個 class
import time from collections import Iterable from collections import Iterator class Classmate(object): def __init__(self): self.names = list() self.current_num= 0 def add(self, name): self.names.append(name) def __iter__(self): """如果想要一個物件稱為一個 可以迭代的物件,即可以使用for,那麼必須實現__iter__方法""" return self # 呼叫iter(xxobj)的時候 只要__iter__方法返回一個 迭代器即可,至於是自己 還是 別的物件都可以的, 但是要保證是一個迭代器(即實現了 __iter__ __next__方法) def __next__(self):if self.current_num < len(self.names): ret = self.names[self.current_num] self.current_num += 1 return ret else: raise StopIteration classmate = Classmate() classmate.add("老王") classmate.add("王二") classmate.add("張三") # print("判斷classmate是否是可以迭代的物件:", isinstance(classmate, Iterable))# classmate_iterator = iter(classmate) # print("判斷classmate_iterator是否是迭代器:", isinstance(classmate_iterator, Iterator)) # print(next(classmate_iterator)) for name in classmate: print(name) time.sleep(1)
要是隻用for的方式 還用什麼迭代器
用迭代器 可以先儲存生成資料的方式 到使用再生成 而不是直接儲存暫時不需要的資料 可以減少很大的記憶體空間的佔用