Python的 yield 和 send 和 yield from

next函数与send函数很相似,都能获得生成器的下一个yield后面表达式的值,不同的是send函数可以向生成器传参:

 

def test(num):
    i = 1
    while i < num:
        print('start')
        temp = yield i ** 2
        yield 'send: %s' % temp
        i += 1


t = test(5)

try:
    index = 0
    while 1:
        a = next(t)
        b = t.send(index)
        index += 1
        print(a, b)
except Exception as e:
    print('结束') 
start
1 send: 0
start
4 send: 1
start
9 send: 2
start
16 send: 3
结束

yield from

def g1():
    yield range(10)
def g2():
    yield from range(10)

for i in g1():
    print(i)
for i in g2():
    print(i)
range(0, 10)
0
1
2
3
4
5
6
7
8
9

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值