python-生成器

天子骄龙 / 2024-09-26 / 原文

生成器(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)