为什么第二个 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/