python - 迭代器(迭代协议/可迭代对象)
迭代器
# 迭代器协议 # 迭代协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就触发一个 StopIteration 异常,以终止迭代(只能往后走不能往前退) # 可迭代对象:实现了迭代器协议的对象(对象内部定义可一个__iter__()方法) # 完整的迭代器 = 迭代协议(__next__) + 迭代对象(__iter__) # 示例: class Test(): def __init__(self,num): self.num = num def __iter__(self): return self def __next__(self): if self.num == 100: raise StopIteration("大于100终止迭代....") self.num += 1 return self.num x = Test(10) #利用next函数或者class内置__next__方法调用 print(next(x)) print(x.__next__()) #用for循环的方式访问迭代器 for i in x: print(i)
既要脚踏实地,也需仰望天空