python关键字yield
在网上搜到一篇讲的不错的博客 博客链接
在这里我就总结一下yield的功能和用法
yield的作用机制:
1、yield执行完当前函数后,结束 (实际上是暂停) 函数并返回值。
2、同一个程序中再次调用这个函数时,从上次结束的下一句开始执行。
用代码来解释yield的作用
代码
def foo():
print("starting...")
while True:
res = yield 4
print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(next(g))
运行结果
starting...
4
********************
res: None
4
yield的作用机制:
1、yield执行完当前函数后,结束 (实际上是暂停) 函数并返回值。
2、同一个程序中再次调用这个函数时,从上次结束的下一句开始执行。
生成器/两个方法
1、next(生成器)
:使生成器生成下一个值,并返回。
2、生成器.send(arg)
:send传的参数??给谁了?给yield返回的那条语句。
可以这样理解:yield可以返回给外界值,外界也可以send()回yield一个值!
代码
def foo():
print("starting...")
while True:
res = yield 4
print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(g.send(7))
运行结果
starting...
4
********************
res: 7
4
为什么要用生成器?
什么是生成器?
含有yield的函数是一个生成器,可以使用next(生成器)函数生成下一个返回值。
1、使用list生成随机数
lis = [i for i in range(0,100000)]
!占用很大空间
2、使用生成器
比如上面举的例子,每次返回一个数值。
for i in itear:
print(i)
每次返回一个,并不是事先做好的随机数