def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        print b
        a, b = b, a + b
        n = n + 1

将print b 改成yield b

def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1

这就是定义generator的另一种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator:

 

 

 

 

generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。

要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。

相关文章:

  • 2021-08-01
  • 2021-07-09
  • 2021-05-19
  • 2021-06-07
  • 2021-09-11
  • 2023-03-02
  • 2023-02-19
  • 2021-11-19
猜你喜欢
  • 2021-08-27
  • 2021-12-17
  • 2021-12-21
  • 2021-06-09
  • 2021-12-28
  • 2021-08-12
  • 2021-12-25
相关资源
相似解决方案