我正在学习生成器,所以我定义了以下计算斐波那契序列的函数:
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
为什么第一个案例不起作用
当您在第一种情况下运行它时,它会从头开始重新运行,因此它始终只会启动>;首先,在第二种情况下,每次调用f时,f都会发生变化,因此它会开始>;首先>;第二个>;第三
相关问题 更多 >
编程相关推荐