欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

生成器(generator,yield),next,send

程序员文章站 2022-05-11 14:29:14
生成器的作用:一条一条输出,输出一个获取一个,不像return,输出后就马上返回,不能执行后面的函数。 !!!send 获取下一个值的效果和next基本一致,但是获取下一个值时,要给上一个yield的位置传递一个数据。 !!!第一次使用生成器时,是用next获取下一个值,最后一个yield不能接受外 ......
#生成器
def generator():
    for i in range(200):
        yield '哇哈哈%s' %i
g = generator() #调用生成数函数,接受作用
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print(ret)
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print(ret)

生成器(generator,yield),next,send

 

 

def generator():
    for i in range(200):
        yield '哇哈哈%s' %i
g = generator() #调用生成数函数,接受作用
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print(ret)
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print(ret)
num = 0
for i in g:
    num += 1
    if num > 10:
        break
    print(i)

生成器(generator,yield),next,send

 

生成器的作用:一条一条输出,输出一个获取一个,不像return,输出后就马上返回,不能执行后面的函数。

!!!send 获取下一个值的效果和next基本一致,但是获取下一个值时,要给上一个yield的位置传递一个数据。

!!!第一次使用生成器时,是用next获取下一个值,最后一个yield不能接受外部的值

#next send
def generator():
    print(123)
    content = yield 1
    print('======',content)
    print(456)
    yield 2 
g = generator() #调用生成数函数,接受作用
ret = g.__next__() #每执行一次g.__next__就是从生成器取值
print('***',ret)
ret = g.send('hello')  #send的效果和next一样
print('***',ret)

 

生成器(generator,yield),next,send

 

 最后一个yield如果想使用的话,解决办法如下:

def generator():
    print(123)
    content = yield 1
    print('======',content)
    print(456)
    arg = yield 2
    ''''''
    yield