# -*- coding: UTF-8 -*- # 迭代器(iterator) l2 = [1,2,3] "__iter__" in dir(l2) # 可迭代对象 l2_iter = iter(l2) l2_iter.__next__() # 迭代器 # import dis # li = [1,2] # dis.dis("for i in li: print(i)") # """ 什么是迭代器,它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值, 任何实现类__iter__ 和 __next__() ( python2中实现next() )方法的对象都是迭代器, __iter__ 返回迭代器自身,__next__返回容器中的下一个值,如果容器中没有更多元素类, 则会抛出 StopIteration 异常 ============================================== 迭代器有一个内部状态的字段,用于记录下次迭代返回的结果, 它实现了 __next__ 和 __iter__ 方法, 迭代器不会一次性把所有的元素加载到内存,而是需要的时候才生成,并返回结果 """ #======================= 示例 =========================# # 迭代器对象可以使用常规for语句进行遍历: # 实例(Python 3.0+) #!/usr/bin/python3 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 for x in it: print (x, end=" ") #======================= 使用 next() =========================# #!/usr/bin/python3 import sys # 引入 sys 模块 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 while True: try: print (next(it)) except StopIteration: sys.exit() # 生成器 def gen_fun(): yield from range(5) gen_fun()