Python中的yield的用法

Python中的yield的用法

学习目标:

  • 掌握yield与return的区别
  • 掌握yield的用法

记录时间:

  • 2023.9.18

学习内容:

yield函数与return的区别

有return的函数直接返回所有结果,函数执行完毕,销毁函数中的局部变量;
有yield的函数则返回一个可迭代的 generator(生成器)对象,你可以使用for循环或者调用next()方法遍历生成器对象来提取结果。调用一个yield函数,就会返回一个生成器对象。【使用了yield的函数被称为生成器】
yield函数有点类似Qt中的exec()函数,会在执行yield的位置暂停,调用next()方法时又从此位置下一行开始。
可以说函数return时就结束了执行,并释放了函数的所有局部变量。而调用yield函数,则暂停了此函数,仍然保留其局部变量。还要注意的是yield也干了return的工作, yield x,会把x返回给调用者,并暂停调用了yield的函数。【return 干一件事,yield干两件事】

yield函数使用

下面举一个例子,展示了两种遍历generator的方式

def yield_generator(x):
    yield x
    yield x+1
    yield x+2

instance_obj = yield_generator(10)
# for i in instance_obj: # 可以打印出10, 11, 12
#     print(i)

print(next(instance_obj))  # 10
print(next(instance_obj))  # 11
print(next(instance_obj))  # 12
print(next(instance_obj))  # 再调用next报错

学习小结:

提示:这里统计学习计划的总量

使用yield的好处

1)yield函数可以用来减低内存消耗。生成器存储的是一种获取一部分数据的规则,而普通集合存储的是所有数据,数据量大的话,内存可能不够用
2)用yield驱动生成器函数分步运行,以实现某些算法;协程中常常可用来控制程序流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值