Python中yieldexpression式的结果是什么?

我知道yield会将函数转换为生成器,但yieldexpression式本身的返回值是多less? 例如:

def whizbang(): for i in range(10): x = yield i 

这个函数执行的variablesx的值是什么?

我已经阅读了Python文档: http : //docs.python.org/reference/simple_stmts.html#grammar-token-yield_stmt ,似乎没有提到yieldexpression式本身的价值。

您也可以sendsend给生成器。 如果没有值被发送,则xNone ,否则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 

发生这种情况是因为产量会在运行中产生更多信息,请查看以下网站https://freepythontips.wordpress.com/2013/09/29/the-python-yield-keyword-explained/

这段代码会产生一些输出

 def test(): for i in range(10): x = yield i t = test() for i in test(): print i 

这里给出一个例子,说明缓冲输出来自一个很大的输出

 #Yeild def a_big_cache(): mystr= [] for i in xrange(100): mystr.append("{}".format(i)) return mystr my_fat_cache = a_big_cache() def get_in_chunks(next_chunk_size): output =[] counter = 0 for element in my_fat_cache: counter += 1 output.append(element) if counter == next_chunk_size: counter = next_chunk_size next_chunk_size+= next_chunk_size yield output del output[:] r = get_in_chunks(10) print next(r) print next(r) 

输出是

[0,1,2,3,4,5,6,7,8,9]

['10','11','12','13','14','15','16','17','18','19']