def test(num):
while True:
print("start {}".format(num))
yield from range(num)
print("end {}".format(num))
num = num + 1
if (num >= 5):
break
#print("生成 {}".format(num))
for it in test(1):
print("{}".format(it))
运行结果:
start 1
0
end 1
start 2
0 # 遇到yield from range(1) 就会把 0、1 yield 出来,中断,然后返回给 for in 语句迭代
1
end 2
start 3
0
1
2
end 3
start 4
0
1
2
3
end 4
yield from 后面加一个可迭代对象,他会把可迭代对象里的每个元素一个一个的yield出来