这是Python 3.3的新功能(如注释所述,它甚至在3.2中也不起作用)。很像return
在发电机中早已等效raiseStopIteration()
,return <something>
在发电机中现在等效raise StopIteration(<something>)
。因此,您看到的异常应打印为StopIteration:3
,并且可以通过value
异常对象上的属性访问该值。如果将生成器委派给使用(也是新的)yield from
语法,则为结果。有关详细信息,请参见PEP 380。
def f():
return 1
yield 2
def g():
x = yield from f()
print(x)
# g is still a generator so we need to iterate to run it:
for _ in g():
pass
这打印1
,但不是2
。