python yield和return的区别_什么时候在Python中使用yield而不是return?

简而言之,只要控制权到达程序中的return语句,程序的执行就会终止,其余的语句将不会执行。

但是,在产生收益的情况下,只要控制权到达程序中的yield语句,程序的执行就会暂停,稍后我们可以继续执行函数中的其他语句。

让我们详细了解这两个语句。

产量

在函数中使用yield语句会使函数成为可以在循环中使用的生成器函数。当函数运行且yield语句执行时,yield之后的值将传递回调用它的循环。下一次循环迭代时,该函数在yield语句之后立即启动。def func():

yield 1

yield 2

yield 3

for num in func():

print(num * num)

输出1

4

9

在上面的程序中,调用函数的循环将在func函数完成时完成–遇到函数的结尾(func())或return语句。

但是,任何使用相同生成器函数的新循环都将从头开始执行该函数。

返回

返回声明用于停止函数执行并有选择地将值返回给调用方。具有返回值(但没有yield)的函数不能在循环中使用(与上面的yield不同)。

如果再次调用先前执行的函数,则该函数从头开始执行(与上面的yield不同)。

什么时候使用收益或收益?

但是,由于资源限制或根本不想将整个序列存储在内存中,建议在我们要遍历序列的情况下使用yield。对于其他情况,我们可以考虑使用return语句。

让我们看看另一个使用yield语句生成整数平方的程序。def Square():

i = 1;

# An Infinite loop to generate squares

while True:

yield i*i

i += 1 # Next execution resumes from this point

for num in Square():

if num > 100:

break

print(num)

输出1

4

9

16

25

36

49

64

81

100

在try…的try子句中通常不使用yield语句。因为无法保证将永远恢复生成器,所以不能保证finally块将被执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值