What is the result of a yield expression in Python?

后端 未结 2 1536
北海茫月
北海茫月 2020-12-04 21:31

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         


        
相关标签:
2条回答
  • 2020-12-04 21:33

    This code will produce some output

    def test():
        for i in range(10):
            x = yield i
    
    t = test()
    for i in test():
        print i
    
    0 讨论(0)
  • 2020-12-04 21:46

    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
    
    0 讨论(0)
提交回复
热议问题