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文章
322浏览量
22509 -
python
+关注
关注
57文章
4858浏览量
89596
发布评论请先 登录
一文了解Mojo编程语言
termux调试python猜数字游戏
【HZ-T536开发板免费体验】4、使用蓝牙模块读取小米温湿度计的数据
C++ 与 Python:树莓派上哪种语言更优?
linux虚拟环境中调用Linux 版matlab编译的python库时出错
TaskPool和Worker的对比分析
跟老齐学Python:从入门到精通
进程、线程、协程傻傻分不清?一文带你彻底扒光它们的\"底裤\"!
零基础入门:如何在树莓派上编写和运行Python程序?
Python在嵌入式系统中的应用场景
创建OpenVINO™ Python脚本,运行可执行文件时遇到的报错怎么解决?
使用Python实现xgboost教程
gitee 支持的编程语言有哪些
华为云 Flexus X 实例下的场景体验——小企业使用 Python 语言——超迅速搭建简单公网 API 接口服务

python语言之await和yield from的对比
评论