python关键字yield

python关键字yield

在网上搜到一篇讲的不错的博客 博客链接
在这里我就总结一下yield的功能和用法

yield的作用机制:
1、yield执行完当前函数后,结束 (实际上是暂停) 函数并返回值。
2、同一个程序中再次调用这个函数时,从上次结束的下一句开始执行。

用代码来解释yield的作用

代码

def foo():
    print("starting...")
    while True:
        res = yield 4
        print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(next(g))

运行结果

starting...
4
********************
res: None
4

yield的作用机制:
1、yield执行完当前函数后,结束 (实际上是暂停) 函数并返回值。
2、同一个程序中再次调用这个函数时,从上次结束的下一句开始执行。

生成器/两个方法

1、next(生成器):使生成器生成下一个值,并返回。
2、生成器.send(arg):send传的参数??给谁了?给yield返回的那条语句。

可以这样理解:yield可以返回给外界值,外界也可以send()回yield一个值!

代码

def foo():
    print("starting...")
    while True:
        res = yield 4
        print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(g.send(7))

运行结果

starting...
4
********************
res: 7
4

为什么要用生成器?

什么是生成器?
含有yield的函数是一个生成器,可以使用next(生成器)函数生成下一个返回值。

1、使用list生成随机数
lis = [i for i in range(0,100000)]
!占用很大空间

2、使用生成器

比如上面举的例子,每次返回一个数值。

for i in itear:
    print(i)

每次返回一个,并不是事先做好的随机数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值