Python中的生成器用法

2024-06-17 08:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习生成器,所以我定义了以下计算斐波那契序列的函数:

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

我试着这样用,但没用:

next(fib(10))
Out[413]: 0

next(fib(10))
Out[414]: 0

next(fib(10))
Out[415]: 0

但是,像这样使用它的效果与预期一样:

f = fib(10)

next(f)
Out[417]: 0

next(f)
Out[418]: 1

next(f)
Out[419]: 1

next(f)
Out[420]: 2

为什么第一个案例不起作用


Tags: 函数定义def序列outmax案例next
1条回答
网友
1楼 · 发布于 2024-06-17 08:43:37

当您在第一种情况下运行它时,它会从头开始重新运行,因此它始终只会启动>;首先,在第二种情况下,每次调用f时,f都会发生变化,因此它会开始>;首先>;第二个>;第三

相关问题 更多 >