63

yield が関数をジェネレーターに変えることは知っていますが、yield 式自体の戻り値は何ですか? 例えば:

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

xこの関数が実行されたときの variable の値は?

私はPythonのドキュメントを読みました: http://docs.python.org/reference/simple_stmts.html#grammar-token-yield_stmtとyield式自体の値についての言及はないようです。

4

1 に答える 1

73

sendジェネレーターに値を指定することもできます。値が送信されない場合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
于 2012-05-22T03:49:42.220 に答える