生成器
def func(): print("111") yield 1 print("222") yield 3 print("333") yield 3 ret=func() print(ret) #具有生成指定条件的数据能力的对象,进行循环的时候才会逐个生成数据 r1=ret.__next__() #进入函数找到yield,获取yield后面的数据 print(r1) r2=ret.__next__() print(r2) r3=ret.__next__() print(r3)
迭代器
def myrange(arg): #与内置函数xrange功能一致 start=0 while True: if start>arg: return yield start start +=1 ret=myrange(3) for item in ret: #迭代器 print(item,end=" ") print("")
例子
def fibonacci(n): #生成器函数 - 斐波那契 a, b, counter = 0, 1, 0 while True: if (counter > n): return yield b a, b = b, a + b counter += 1 f = fibonacci(10) # 自己写迭代器 # import sys # while True: # try: # print (next(f), end=" ") # except StopIteration: # sys.exit() # 内置迭代器 for i in f: print(i,end=" ")