python初识生成器 迭代器
生成器
带有 yield 的函数在 Python 中被称之为 generator(生成器)
def xragns(): #定义函数生成器 print('小伙') yield ('好') #加上yield就会生成一个生成器 print('python') yield('hao') print('编程') yield('hao') x = xragns() #执行函数生代器仅仅是获得内部不会执行 ret = x.__next__() #生成器的next方法才会向下执行 执行函数寻找下一个yield print(ret) ret = x.__next__() #第二次执行会回到上次跳出的位置想下执行 print(ret) ret = x.__next__() print(ret)
迭代器
迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。迭代器只能往前不能后退
ef xrange(n): #定义一个函数 start = 0 while True: #while循环 if start > n: #判断如果值小于n return yield start #生成器退出 start += 1 #每循环到这都加一 for i in xrange(10): #迭代器 print(i) obj = xrange(5) #执行函数,这个时候内部不会执行生成器 n1 = obj.__next__() #生成器从上向下执行知道遇到的第一个yield n2 = obj.__next__() #生成器会回到上次跳出的位置继续回去循环 n3 = obj.__next__() # 依次想下执行 n4 = obj.__next__() n5 = obj.__next__() n6 = obj.__next__() n7 = obj.__next__() print(n1,n2,n3,n4,n5,n6) #输出所有的结果 #