yield 有两个作用:
- 暂停执行当前代码,并记录当前位置
- 相当于 return, 可以在后面返回值
yield自身就是生成器! def genter(): a = 4 b = 5 c = 6 for i in range(5): yield a print('hhh'+str(i)) yield b print("aaa" + str(i)) yield c # 包含了yield 的 genter() 就是一个生成器 res = genter() print(res) for i, c in enumerate(res): #使用 for 语句,里面封装了 next 方法。来一个个取出生成器的值 print('i',i) if i > 1: # 通过 break 来测试执行的结果 break print(c) print('--------------------------------')
结果:
i 0
4
--------------------------------
hhh0
i 1
5
--------------------------------
aaa0
i 2