作用:节省空间
使用:通过 next / for循环 调用

在函数中,通过 yield 返回函数值,并在下一次调用函数时,从上次那个yield 处开始运行。

简单演示:

  1. def odd():
  2. print('step 1')
  3. yield 1
  4. print('step 2')
  5. yield(3)
  6. print('step 3')
  7. yield(5)
  8. >>> o = odd()
  9. >>> next(o)
  10. step 1
  11. 1
  12. >>> next(o)
  13. step 2
  14. 3
  15. >>> next(o)
  16. step 3
  17. 5
  18. >>> next(o)
  19. Traceback (most recent call last):
  20. File "<stdin>", line 1, in <module>
  21. StopIteration

练习

每行输出杨辉三角形系数list

  1. def triangles():
  2. L=[1]
  3. while True:
  4. yield L
  5. L=[1]+[L[x]+L[x+1] for x in range(len(L)-1)]+[1]
  6. n = 0
  7. results = []
  8. for t in triangles():
  9. results.append(t)
  10. n = n + 1
  11. if n == 10:
  12. break
  13. print(results)