levels of contents

python 生成器

生成器

生成器是用来生成数据的一个办法

yield关键字

yield相当于是return,当函数运行到这里之后会暂停,并且返回后面的变量给调用的位置
yield是没有返回值的,所以 num = yield a,这个时候num的值是None
next()函数可以使函数接着运行下去
每一次next()都会使程序运行下去并且在此停止在yield关键字的地方,直到下次再调用

生成器的几个方法
close():

g=(i for i in range(5))
print(g.__next__())
print(g.__next__())
print(g.__next__())
g.close()
生成器这时候会关闭

send():
send和next一样都会让yield继续开始,并在下一次yield的地方暂停
send可以向生成器内部传递参数
传递参数之前必须让生成器执行一次next,使生成器暂停在yield位置

def demo():
    for i in range(10):
        res=yield i
        print('send传入的数据,',res)

g=demo()
print('next生成的数据:',next(g))
print('send生成的数据:',g.send(6))
output:
next生成的数据: 0
send传入的数据, 6
send生成的数据: 1
#next使程序先运行到res=yield i,输出一次
#这时候数字6传入,函数继续运行,输出demo里面的打印函数
#之后主程序的最后一条打印函数运行

posted @ 2023-03-08 17:26  niko5960  阅读(31)  评论(0)    收藏  举报