生成器
生成器是用来生成数据的一个办法
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里面的打印函数
#之后主程序的最后一条打印函数运行
标签:__,python,生成器,send,next,yield,print
From: https://www.cnblogs.com/niko5960/p/17195455.html