python-生成器
生成器(generator)其实是一类特殊的迭代器。前面博客我们每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合next()函数进行迭代使用,python就搞了个生成器。所以说生成器(generator)其实是一类特殊的迭代器
生成器就是自己定义的迭代器
生成器原理
#生成器函数 #只要有yield的函数就是生成器函数 def generator(): print(1) yield "a" #next函数的返回值 ,有yield不要写return #return返回之后函数就结束了 #yield返回之后函数不会结束,等待next的操作 print(2) yield "b" ret=generator() #返回迭代器,此时不会执行函数内的代码 print(ret) print(ret.__next__()) #返回第一个yield的返回值a print(ret.__next__()) #返回第二个yield的返回值b print(ret.__next__()) #发出异常信息StopIteration,表示已经在尾部没有值了
生成器使用实例一
#生成10个娃哈哈 def wahaha(): for i in range(10): yield f"娃哈哈{i}" ret=wahaha() for i in ret: print(i)