gpt4 book ai didi

python - Python 中生成器的使用

转载 作者:行者123 更新时间:2023-12-01 04:07:14 24 4
gpt4 key购买 nike

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

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

为什么第一种情况不起作用?

最佳答案

下一个(迭代器[,默认])

Retrieve the next item from the iterator by calling its next() method. If default is given, it is returned if the iterator is exhausted, otherwise StopIteration is raised.

第一个有效:

它只是为您调用fib(10)时创建的每个函数实例生成一个新的迭代器

因此,每次调用 fib(10) 时,您都会创建一个新的 fib 函数实例,该实例返回特定于该实例的迭代器

请注意,它们都正确返回第一个值。

关于python - Python 中生成器的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com