我知道yield把一个函数变成了一个生成器,但是yield表达式本身的返回值是多少呢?例如:
def whizbang():
for i in range(10):
x = yield i
x
这个函数执行时变量的值是多少?
我已经阅读了 Python 文档:http ://docs.python.org/reference/simple_stmts.html#grammar-token-yield_stmt似乎没有提到 yield 表达式本身的值。
您还可以send
对生成器进行赋值。如果没有发送值,则x
is None
,否则x
采用发送的值。这是一些信息:http ://docs.python.org/whatsnew/2.5.html#pep-342-new-generator-features
>>> def whizbang():
for i in range(10):
x = yield i
print 'got sent:', x
>>> i = whizbang()
>>> next(i)
0
>>> next(i)
got sent: None
1
>>> i.send("hi")
got sent: hi
2