栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

python中yield,send及next的使用

Python 更新时间:发布时间: 百科书网 趣学号

生成器是带有yield的函数,可以通过迭代器next,或者send调用,每次调用时运行到yield处返回,并带回yield的结果,再下一次用过迭代器(next不可传值,send可传值)调用时从原来yield返回处继续向下执行。下面是截取的代码例子,冗余代码请忽略:

def fib(max):    
    n, a, b = 0, 0, 1    
    while n < max:
        print(f'max:{max}')
        print('max:{}'.format(max))
        x=yield max+1
        print('x:',x)
           
f=fib(22)
y=f.send(None)#启动生成器时send只能传None,第一次运行到yield返回
print(f'y:{y}')#打印返回的结果23
r=next(f)#从yield返回出向下执行,打一次打印x为Node,第二次执行到yield返回
print(f'r:{r}')#打印第二次yeild返回结果23
f.send(10)#从第二次yield返回处继续执行,传入10,因此x打印结果为10,第三次运行到yeild处返回,返回结果被丢弃
f.close()#关闭生成器

yield只返回一个元素,yield from后加可迭代对象可以将对象中的元素一个个元素一个个的yield出来,注意yield from的生成器,不能通过send传值。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/280314.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号