进行多任务的学习 携程 开始做一个迭代器 再做生成器 再学习携程 迭代器就是 可以用 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的方式 还用什么迭代器
用迭代器 可以先存储生成数据的方式 到使用再生成 而不是直接存储暂时不需要的数据 可以减少很大的内存空间的占用
原文地址:https://www.cnblogs.com/fromlantianwei/p/9990258.html
时间: 2024-10-08 23:02:37