python中的yield的

  1. 介绍
    怎么说这个yield呢,python和php7中都有这个关键字。网上的说法是:带有 yield 的函数不再是一个普通函数,而是一个生成器generator,可用于迭代。
  2. 详解
    yield在python 里就是一个生成器。当你使用一个yield的时候,对应的函数就是一个生成器了。你可以把它看做是一个return都是返回。但是yield不会结束函数,他只返回yield右边的变量,然后代码停止等到下生成器中的next()来执行他的时候,它再继续执行下面的代码。这里也举一个简单的例子,网上也有类似
  3. 示例一
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.结束语:怎么样,你会了吗

猜你喜欢

转载自blog.csdn.net/weixin_42547619/article/details/88979537