使用Python的yield关键字生成斐波那契数列及其原理

    技术2025-03-24  20

    代码如下:

    def fab(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 print("print(fab(5)):",fab(5)) for n in fab(5): print(n)

    yield存在于函数中,就将函数变成了一个generator(生成器),调用 fab(5) 并不会直接运行 fab 函数,返回的是一个可迭代对象(如实验结果),每次迭代都会执行函数内部的代码,到“yield b”的时候就暂停执行,返回一个迭代值,下一轮迭代直接从“yield b”的下一句执行,直到再次碰见“yield b”。

    也可以直接调用fab(5)的next方法,因为是一个generator对象,所以具有next方法:

    def fab(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 f = fab(5) print(f.__next__()) print(f.__next__()) print(f.__next__())

    Processed: 0.009, SQL: 9