What is the result of a yield expression in Python?

PythonGeneratorYield

Python Problem Overview


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.

Python Solutions


Solution 1 - Python

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionslacyView Question on Stackoverflow
Solution 1 - PythonjamylakView Answer on Stackoverflow