python语言之使用async关键字来定义函数

2022-08-25
关注

协程背景

早期的协程是用yield来实现的,但是代码特别难懂, python3.5之后的版本, 使用 async 关键字来定义的函数。调用该函数,会返回一个协程对象

async和yield对比

不同点:

1.1 yield语法比较复杂,async语法简单

yield:b=yield a,yield右边的a是第一次的返回值,左边的b是第二次执行的输入值,最后还有一个return是最后一次返回值

async:方法前面加async,做send参数时,只能传None,代码可读性大大提高了, 开发者只需要关注传参和返回值, 而不需要花额外精力去理解yield左右的变量

1.2 async只需要send一次就可以获得返回值,yield要send2次

例子说明

分别用yield和async的方式, 实现协程


async def req1(param):
return param


def req2(param):
res = yield param
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返回值 1
req2接收 2
req2返回值 2
'''


审核编辑:刘清

  • python
  • python函数
  • param
  • 返回值
  • async
  • python协程
  • yield
您觉得本篇内容如何
评分

评论

您需要登录才可以回复|注册

提交评论

电子发烧友

这家伙很懒,什么描述也没留下

关注

点击进入下一篇

花不到40美元学习世界上最流行的编程语言

提取码
复制提取码
点击跳转至百度网盘