我尝试了python的生成器(与from一起),但最终得到了无限循环。我的python版本是python3。为什么我会陷入无限循环
下面是我的代码:
def fib2():
a,b = 0,1
while True:
yield a
a,b = b , a+b
def FibNumber(num):
fi2= fib2()
for i in range(num):
yield from fi2
if (__name__ == "__main__"):
fin = FibNumber(10)
for i in fin:
print (i)
您可以在第二个迭代器中使用uuu next_uuu()
这是因为您将
yield from
与无限生成器一起使用PEP 380说:其中
<expr>
是计算iterable的表达式,从中提取迭代器。迭代器运行到耗尽,在此期间,迭代器直接向包含来自表达式的屈服的生成器(“委托生成器”)的调用者生成并接收值(我用粗体字)
fin
确实是一个无限的生成器FiBNumber
没有做你想做的事;对于i
的每个值,它试图从fi2
产生所有。更正确的定义是但是,您实际上只是在重新实现
itertools.islice
:相关问题 更多 >
编程相关推荐