I know that yield turns a function into a generator, but what is the return value of the yield expression itself? For example:
def whizbang(): for i in range(10): x = yield i
What is the value of variable
x as this function executes?
I’ve read the Python documentation: http://docs.python.org/reference/simple_stmts.html#grammar-token-yield_stmt and there seems to be no mention of the value of the yield expression itself.
You can also
send values to generators. If no value is sent then
x takes on the sent value. Here is some info: 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
This code will produce some output
def test(): for i in range(10): x = yield i t = test() for i in test(): print i