python next() 方法的问题 10

deffunc():x=0whileTrue:x+=1yieldxprint(next(func()))print(next(func()))print(next(fun... def func():
x = 0
while True:
x += 1
yield x

print(next(func()))
print(next(func()))
print(next(func()))
#返回值1 1 1
f=func()
print(next(f))
print(next(f))
print(next(f))
#返回值1 2 3

既然f=func()
为什么next(func())没有进入循环,next(f)可以正常迭代?
展开
 我来答
heavensend
2018-03-06 · TA获得超过693个赞
知道小有建树答主
回答量:252
采纳率:95%
帮助的人:162万
展开全部
多次调用func(),实际上每次都是创建一个新的引用。你可以这样来理解,你每一次执行print(next(func())),实际上就是在执行f = func() ; print(next(f))。如果你每次都创建一个新的生成器,自然每次就只能取出一次元素。
追问
非常感谢你,这样说,函数写的迭代器都必须要赋值再调用next方法吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式