python - Next on generators 不会从上次调用恢复

标签 python python-3.x generator

为什么第二个 next 不返回 "bye"

def salute():
    yield "hello"
    yield "bye"


def greet_me():
    print(next(salute()))
    print(next(salute()))

greet_me()

输出:

hello

hello

最佳答案

因为每次调用 salute() 时都会创建一个生成器。 once 创建生成器,然后 then 对其调用 next 以获得两个 yield 以产生它们的值:

def greet_me():
    gen = salute()    # create the generator
    print(next(gen))  # start it, goes to the first yield
    print(next(gen))  # resume it, goes to second yield

调用 greet_me 现在会打印预期的结果。

关于python - Next on generators 不会从上次调用恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46196770/

相关文章:

Python - Django 2.2 中的多用户类型实现

python - 将蓝牙名称更改为 Pi Zero 上的当前 IP 地址

python-3.x - 使用 ffmpeg 连接图像和 ts 文件的 Python 代码

matlab - f1 matlab 帮助功能的spyder替代品

python - 有没有办法在 Python 中将递归限制设置为无限?

lisp - 是否有一个简单的 lisp 等效于 Python 的生成器?

python - Numpy:向量化一个集成二维数组的函数

python - 在以下情况下使用生成器函数有什么优点?

angularjs - 从 generator-gulp-angular 全栈生成的端点中删除一些文件

python - 如何在使用 fish 时停用 venv?