You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用next(generator)报'function' object is not an iterator原因是什么

错误原因
  • 你定义的generator是生成器函数本身,不是迭代器对象。带yield关键字的生成器函数,必须主动调用后才会返回可迭代的生成器实例,直接对函数对象调用next()就会触发TypeError: 'function' object is not an iterator报错。
  • 你原本的写法里每次都传入函数名generator,没有执行函数,自然无法触发yield逻辑返回值。就算你每次写next(generator())也不对,会每次重新创建生成器实例,每次都返回1,达不到依次输出1、2、3、4的效果。
修复后的代码
def generator():
    yield 1
    yield 2
    yield 3
    yield 4
    
# 先调用生成器函数,拿到迭代器实例复用
gen = generator()
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))

运行上述代码就会输出你预期的1、2、3、4。

内容的提问来源于stack exchange,提问作者Mjd Almalti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:57:04