await和yield from对比
不同点:yield from 后面的值,要么是生成器,要么是最终为可迭代对象,而await后面只能跟async开头的方法
相同点: 都是产出结果,让出控制权,等待返回结果
例子说明
分别用await和yield from实现了等待协程完成的过程
async def req1_sub(param):
return param+10
async def req1(param):
res = await req1_sub(param)
res += 100
return res
def req2_sub(param):
res = yield param+10
return res
def req2(param):
res = yield from req2_sub(param)
res += 100
return res
def print_value(f, args):
try:
b = f.send(args)
except StopIteration as e:
print(f'{f.__name__}返回值 {e.value}')
return e.value
else:
print(f'{f.__name__}接收 {b}')
return b
g1 = req1(1)
print_value(g1, None)
g2 = req2(2)
res = print_value(g2, None)
print_value(g2, res)
'''
结果:
req1返回值 111
req2接收 12
req2返回值 112
'''
审核编辑:刘清
-
生成器
+关注
关注
7文章
306浏览量
20602 -
python
+关注
关注
53文章
4701浏览量
83701
发布评论请先 登录
相关推荐
鸿蒙OS开发实例:【ArkTS类库异步并发async/await】
![鸿蒙OS开发实例:【ArkTS类库异步并发async/<b class='flag-5'>await</b>】](https://file1.elecfans.com/web2/M00/C5/CD/wKgZomYCdwyAIFf5AAB_7E1pFms943.jpg)
鸿蒙原生应用开发-ArkTS语言基础类库异步并发简述async/await
四种编程语言之间的区别和联系
python语言特点有哪些
Python编程语言属于什么语言
Python yield的作用
![<b class='flag-5'>Python</b> <b class='flag-5'>yield</b>的作用](https://file1.elecfans.com/web2/M00/AB/81/wKgaomVAbp-AeWDWAACv29-E42U328.jpg)
如何学会 Python yield 关键词
![如何学会 <b class='flag-5'>Python</b> <b class='flag-5'>yield</b> 关键词](https://file1.elecfans.com/web2/M00/AB/81/wKgaomVAbp-AeWDWAACv29-E42U328.jpg)
python和人工智能的关系
人工智能要学什么语言
人工智能需要什么编程语言
Go能取代Python成为开发者的首选语言吗?
![Go能取代<b class='flag-5'>Python</b>成为开发者的首选<b class='flag-5'>语言</b>吗?](https://file1.elecfans.com/web2/M00/8E/FC/wKgaomTLDR6AXNqmAAA5CbFk98c880.png)
![](https://file1.elecfans.com/web2/M00/8E/65/wKgaomTFrAuABT_KAABp0KJ0oxA281.png)
![](https://file1.elecfans.com/web2/M00/8E/62/wKgZomTFq9mAIrIoAADShs4e2OY071.png)
评论