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 を読んだところ、収量式自体の値については言及されていません。
ジェネレータに値をsend
することもできます。値が送信されない場合、x
は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