python中yield函数的用法

2022-09-19 08:37:43

yield 和 return有一定的区别
return:在函数中返回某个值,然后函数结束运行。一般没有返回值类型,就不用写return
yield:带yield的函数是一个迭代器,在函数内部碰到yield 的时候,函数会返回某个值,并停留在这个位置,当下次执行函数后,会在上次停留的位置继续运行。
我们来看一个了例子:

def foo():
    print("strat...")
    while True:
        y=yield 1
        print("y:{0}".format(y))
g=foo()
print(next(g))
print("---------")
print(next(g))

执行结果如下:
在这里插入图片描述
1.我们可以对代码加上断点,然后我对此进行详细解释:
当执行代码的时候,因为foo函数中含有yield,所以foo不是函数而是一个生成器,所以g也是一个生成器。
2.对此,我们需要next方法对其调用,首先 会print(“strat…”),然后进入循环,此时碰到yield了,但是不会对y进行赋值操作,而是直接返回个1就结束执行了。
3.然后就是print("---------")操作,进行打印。然后再次调用next操作,此时会在上次停留的位置继续进行,准备进行赋值操作了。但是1已经返回出去了,所以此时y的值为none,没有值赋给他,对其打印之后,再次进入循环,又碰到yield了。周而复始。。。。。。

  • 作者:一只努力的cs小白
  • 原文链接:https://blog.csdn.net/shenbossed/article/details/109393857
    更新时间:2022-09-19 08:37:43