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

python中yield,send及next的使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python中yield,send及next的使用

生成器是带有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.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/280314.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号