生成器的启动与唤醒

定义好一个生成器之后,需要怎么启动?怎么唤醒?

def gen():

    i = 0
    while i < 5:
         temp = yield i
         print(temp)
         i += 1

f=gen()
f.send(122)

上述代码运行,发现报错如下:

Traceback (most recent call last):
  File "/home/itcast/Desktop/python_9/send_next.py", line 12, in <module>
    f.send(122)
TypeError: can't send non-None value to a just-started generator

指明在未启动的生成器中不能使用send传递一个非空的值,也就是说不能用send(value)来启动一个生成器,那么如何解决呢?

方法1:
使用next()启动生成器之后再用send(value)唤醒并传递数据

def gen():

    i = 0
    while i < 5:
         temp = yield i
         print(temp)
         i += 1

f=gen()

next(f)
f.send(122)

方法2:
使用send(None)来启动生成器之后再用send(value)唤醒并传递数据

def gen():

    i = 0
    while i < 5:
         temp = yield i
         print(temp)
         i += 1

f=gen()

f.send(None)
f.send(122)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值