0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至配饺子 来源:缪斯之子 作者:肖新苗 2022-08-24 11:12 次阅读

协程背景

早期的协程是用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
'''


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4117

    浏览量

    61547
  • python
    +关注

    关注

    53

    文章

    4701

    浏览量

    83699
收藏 人收藏

    评论

    相关推荐

    鸿蒙OS开发实例:【ArkTS类库异步并发async/await】

    async/await是一种用于处理异步操作的Promise语法糖,使得编写异步代码变得更加简单和易读。通过使用async关键字声明一个函数为异步
    的头像 发表于 04-02 20:57 387次阅读
    鸿蒙OS开发实例:【ArkTS类库异步并发<b class='flag-5'>async</b>/await】

    鸿蒙原生应用开发-ArkTS语言基础类库异步并发简述async/await

    async/await是一种用于处理异步操作的Promise语法糖,使得编写异步代码变得更加简单和易读。通过使用async关键字声明一个函数为异步
    发表于 03-06 14:44

    内联函数定义 为什么需要内联函数

    inline关键字是C99标准的型关键字,其作用是将函数展开,把函数的代码复制到每一个调用处。
    的头像 发表于 02-19 12:20 389次阅读

    在NVM和本地\"内存中定义数组(静态 /global /local)的\"关键字是什么?

    在 NVM 和本地\"内存中定义数组(静态 /global /local)的\"关键字是什么? 还有与 32 位对齐的关键字怎么样。
    发表于 01-25 07:52

    python函数返回多个参数

    。 在Python中,可以使用关键字 return 来返回一个或多个值。在函数定义的末尾,可以使用 return 语句来指定函数要返回的值。
    的头像 发表于 11-21 16:37 672次阅读

    python如何定义一个函数

    ()。但你也可以自己创建函数,这被叫做用户自定义函数。 二、定义一个函数 你可以定义一个由自己想
    的头像 发表于 11-14 11:26 495次阅读

    static关键字的三种用法

    变量(StaticVariables):在C语言中,使用`static`关键字来声明静态变量是一种常见的用法,它具有以下主要作用:1.生存期延长:静态变量的生存期在程序的整个运行期间,而不仅仅是在声明它的函数调用期间。这意味着静
    的头像 发表于 11-10 08:00 318次阅读
    static<b class='flag-5'>关键字</b>的三种用法

    IAR能否在整个工程中搜索关键字

    像mdk可以在整个工程中搜索关键字 IAR应该也有类似的功能吧,但是我貌似没有找到
    发表于 11-08 07:21

    在嵌入式中定义变量时volatile关键字的作用是什么?

    在嵌入式中定义变量时volatile关键字的作用?
    发表于 10-24 07:50

    程序中变量加volatile关键字是做什么用途的?

    为什么变量定义要加上这个关键字
    发表于 10-13 07:15

    python定义函数与调用函数的顺序

    定义函数与调用函数的顺序 函数定义后,本身是不会自动执行的,只有在被调用后,函数才会被执行,得
    的头像 发表于 10-04 17:17 735次阅读

    一文详解python调用函数

    函数定义后,本身是不会自动执行的,只有在被调用后,函数才会被执行,得到相应的结果。但是在 Python 中我们要注意一个关键点,就是
    发表于 10-01 10:45 316次阅读

    如何使用机器学习在M480上执行关键字识别

    应用程序: 本样本代码使用机器学习在 M480 上执行关键字识别。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件: NuMaker-PFM-M487 VER 3.0
    发表于 08-29 06:46

    使用机器学习在M480上执行关键字识别

    应用程序: 本样本代码使用机器学习在 M480 上执行关键字识别。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件: NuMaker-PFM-M487 VER 3.0
    发表于 08-22 08:02

    C语言面试最常问的关键字

    大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是C语言面试最常问的三个关键字,希望能对你有所帮助。
    发表于 07-11 12:41 226次阅读