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