在使用生成器时,我们会生成一个保存其值的变量,并在我们提供next()
语句时将使用该保存的值恢复。有没有办法我们可以做到这一点,但实际上并没有打印出变量的值?
def foo():
n = 0
print("This is where we start")
yield n
n += 1
print("This is first")
yield n
n += 1
print("This is second")
yield n
a = foo()
next(a)
This is where we start
0
next(a)
This is first
1
答案 0 :(得分:3)
您正在使用 Python交互式解释器来调用next()
,并且它是该shell的函数来打印返回值。您所看到的与生成器无关。
只需将next()
调用的返回值分配给变量,就不要让它们回显:
ignored = next(a)
或将您的代码作为脚本运行。
请注意,生成器会立即暂停; ;在您调用next()
之前,不会运行任何代码。此时代码将一直运行,直到达到yield
表达式;返回它的值,然后再次暂停生成器。 yield
结果'保存'不会。