生成器--yiled

1. 使用推导式, 

# 用(),输出生成器,而不是元组
# print((i for i in range(3)))
# 输出:<generator object <genexpr> at 0x000001E79393E890>
g = (i for i in range(3))
print(next(g))
print(next(g))
print(next(g))

2. yiled

# 用yiled创建生成器,程序执行到yiled时暂停并返回,等下一个next()时,从yiled处继续执行

def gen_by_yiled():
    for i in range(4):
        print(f"i的值:{i}")
        send_vaue = yield i
        print("*" * 30)
        print(f"yiled后,i的值:{i}; send_vaue值为:{send_vaue}")


gg = gen_by_yiled()
print(gen_by_yiled())
print(next(gg))
print(gg.send(100))

直接调用函数,返回的是生成器对象,“<generator object gen_by_yiled at 0x000001142679E740>”,需要通过 next()获取,并执行到 yiled 时暂停并返回,等下个next()调用时,从 yiled 处继续执行,并执行到程序结束或者下一个 yiled。

gg.send(100),发送的值,yiled接收,send_value = yield,将发送的100传给 send_value

运行的结果: 

<generator object gen_by_yiled at 0x0000018C7F34E740>
i的值:0
0
******************************
yiled后,i的值:0; send_vaue值为:100
i的值:1
1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值