【发布时间】:2021-10-27 18:02:31
【问题描述】:
def generator():
yield 1
yield 2
yield 3
yield 4
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
vs 的错误是 打印(下一个(生成器)) TypeError: 'function' 对象不是迭代器
我认为输出应该是 1 2 3 4
那么为什么会发生这个错误?
【问题讨论】:
-
因为正如它所说,
generator是一个函数,而不是一个迭代器。它是一个生成器函数,所以它返回一个迭代器(一个生成器) -
"generator" 是一个生成器函数,它在调用时返回一个生成器(也可用作迭代器)。
-
欢迎来到 Stack Overflow。链接的副本不是同一个问题,但它会向您展示使用生成器的几个正确示例。不过,这里有一个快速提示:想象一下,如果你写的是
def generator(x):。你认为x的价值来自哪里?另一种了解生成器如何工作的方法是尝试输入python generator tutorialinto a search engine,或阅读documentation(我承认最后一部分很难找到)。
标签: python python-3.x