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.
Yield is a keyword in Python that is used to return from a function without destroying the states of its local variable and when the function is called, the execution starts from the last yield statement. Any function that contains a yield keyword is termed a generator.
yield in Python can be used like the return statement in a function. When done so, the function instead of returning the output, it returns a generator that can be iterated upon. You can then iterate through the generator to extract items.
The yield instruction takes the current executing context as a closure, and transforms it into an own living object. This object has a __iter__ method which will continue after this yield statement. So the call stack gets transformed into a heap object.
Expression yields typically are expressed as the amount of product obtained, per unit time, per fermentation volume. From: Encyclopedia of Food Microbiology (Second Edition), 2014.
You can also send
values to generators. If no value is sent then x
is None
, otherwise 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With