关于yield你只需要知道这2点

文章介绍了yield在Python中的概念,指出它是生成器的核心,类似return但能让函数暂停执行并保留状态。通过例子说明了yield如何在for循环中控制迭代过程,使得函数按需产生值直到循环结束。
摘要由CSDN通过智能技术生成

1.yield是放在函数里面的,且带有yield的函数就叫做生成器,这时函数就成了一个对象,而不能把它作为函数来对待

def foo(num):
    print("introduction:")
    while:
        if num < 10:
            num += 1
            yield num
g = foo()

看上面的代码,我们把函数赋值给了g,其实就是让g成为一个生成器对象。这时就不要把g看做一个函数了。

2.yield的作用相当于一个return(简单来看),会返回一个值,同时停止所在函数的运行。如果是在循环里面,则返回一个值后,下次一循环会在上次return的地方继续开始而不是从函数的开头开始运行。

for n in g(0):
    print(n)

运行上面的代码,得到的输出是从1-10,原因就在于第一次运行时计算num得到1,然后yield返回一个1并且打印出来。之后第二次循环的原因就是,g这个生成器对象中的循环还没有结束,它会在yield返回num=1后继续下一次训话,即判断num<1,继续让num+1得到num=2并返回2,所以会打印出2。如此循环知道g内部的循环结束为止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诺坎普的风间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值