1. 程式人生 > >18 11 20 網路通訊 ----多工---- 攜程 ----迭代器

18 11 20 網路通訊 ----多工---- 攜程 ----迭代器

 

 

進行多工的學習    攜程   開始做一個迭代器   再做生成器  再學習攜程    迭代器就是  可以用 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的方式  還用什麼迭代器

迭代器 可以先儲存生成資料的方式  到使用再生成   而不是直接儲存暫時不需要的資料  可以減少很大的記憶體空間的佔用