python中yield的简单理解

yield与return类似,都可返回某值,但return返回后不再继续执行,yield返回值后会暂停在某处,下次会接着在该位置继续执行。

含有yield的函数会成为生成器函数,在循环的过程中计算所需元素,不必创建完整的list,节省了大量空间。使用next()进行下一步运算(从上一步停下的地方开始)。

def test():
    print("begin")
    while True:
        print('循环开始')
        x = yield 2022
        print("赋值x:",x)
        print('循环结束')
run = test()   #此句没有任何输出
print('第一个next:')
print(next(run))
print('第二个next:')
print(next(run))
print('第三个next:')
print(next(run))

输出:


执行第一个next时,从函数开始处向后进行,进入while循环,遇到yield后返回了2022。
执行第二个next时,从上次停止处,也就是赋值语句的位置,继续向后进行。由于赋值语句右边的2022在上一个next已经被返回出去,此时右边没有值,所以没能进行赋值,print出来的x值为None。循环结束直接进入下一轮while循环,在yield处返回2022。
执行第三个next时,同上

x始终未被赋值

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值