标签:next mat 网络 存储 就是 直接 current span pre
进行多任务的学习 携程 开始做一个迭代器 再做生成器 再学习携程 迭代器就是 可以用 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的方式 还用什么迭代器
用迭代器 可以先存储生成数据的方式 到使用再生成 而不是直接存储暂时不需要的数据 可以减少很大的内存空间的占用
18 11 20 网络通信 ----多任务---- 携程 ----迭代器
标签:next mat 网络 存储 就是 直接 current span pre
原文地址:https://www.cnblogs.com/fromlantianwei/p/9990258.html