What is the result of a yield expression in Python?

Deadly 提交于 2019-11-27 18:27:37

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

Here is an example of yield to give buffered output from say a big cahce

#Yeild

def a_big_cache():
    mystr= []
    for i in xrange(100):
        mystr.append("{}".format(i))
    return mystr

my_fat_cache = a_big_cache()

def get_in_chunks(next_chunk_size):
    output =[]
    counter = 0
    for element in my_fat_cache:
        counter += 1
        output.append(element)
        if counter == next_chunk_size:
            counter = next_chunk_size
            next_chunk_size+= next_chunk_size
            yield output
            del output[:]

r = get_in_chunks(10)
print next(r)
print next(r)

Output is

['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

['10', '11', '12',> '13', '14', '15', '16', '17', '18', '19']

San k

This code will produce some output

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

t = test()
for i in test():
    print i
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!