- 介绍
怎么说这个yield呢,python和php7中都有这个关键字。网上的说法是:带有 yield 的函数不再是一个普通函数,而是一个生成器generator,可用于迭代。 - 详解
yield在python 里就是一个生成器。当你使用一个yield的时候,对应的函数就是一个生成器了。你可以把它看做是一个return都是返回。但是yield不会结束函数,他只返回yield右边的变量,然后代码停止等到下生成器中的next()来执行他的时候,它再继续执行下面的代码。这里也举一个简单的例子,网上也有类似 - 示例一
def foo():
print("test start .....")
while True:
res = yield 4
print("value:", res)
g = foo()
print(next(g))
print(next(g))
执行结果如下
1.首先将g赋值了foo(函数有yield的就叫生成器generator)我们看到始终打印出来一条test start 说明函数foo只运行了一次。
2.在执行第一次next(g)时 运行了 print(“test start …”) ,然后继续运行while True ,遇到了 yield 4 此时代码停止了在了第四行,并且返回了4 也就是 next(9)=4,谈话打印出来。
3.第二次执行next(g)的时候代码是 res = yield 4从第四行下面开始 的这个时候 res是没有值的所以打印出了 None ,(此时如果想给res赋值的话可以用 g.send(7),就把7赋值给 res了)。此时进入while循环又遇到了 yield 4 则代码继续返回4。
4.由于后续没有再使用生成器所以程序结束。
4.示例二:
生成器用的时候才生成,可以利用它生成一个数组效果更好。
def foo1(num):
while num < 5:
num = num + 1
yield num
for n in foo1(0):
print(n)
返回结果
6.结束语:怎么样,你会了吗