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

    文章

    4350

    浏览量

    63052
  • python
    +关注

    关注

    56

    文章

    4811

    浏览量

    85103
收藏 人收藏

    评论

    相关推荐

    C语言关键字分别发生在哪个阶段

    在编译的第一个阶段:预处理,对一些宏定义做替换。 第二个,const。 C语言中的 const 用于修饰只读变量,表示变量本身不能修改。 这个关键字会在编译的第二步起作用,也就是编译。强行修改一个只读变量,编译就会提示问题。 第
    的头像 发表于 11-24 10:31 249次阅读

    C语言关键字--typedef

    C语言关键字使用方法学习指南!
    的头像 发表于 10-07 12:44 353次阅读

    基于ArkTS语言的OpenHarmony APP应用开发:HelloOpenharmony

    console.log(typeof data); // number 3.2.2、number TypeScript 提供了 number 关键字表示数字类型,它是双精度 64 位浮点值,既可以表示整数
    发表于 09-14 12:47

    使用边缘AI和Sitara处理器进行关键字检测

    电子发烧友网站提供《使用边缘AI和Sitara处理器进行关键字检测.pdf》资料免费下载
    发表于 09-02 11:30 0次下载
    使用边缘AI和Sitara处理器进行<b class='flag-5'>关键字</b>检测

    typedef struct和直接struct的区别

    在C语言中, typedef 和 struct 是两种不同的关键字,它们在定义和使用上有着明显的区别。 typedef struct 和直接 struct 在 C 语言中用于
    的头像 发表于 08-20 10:58 3149次阅读

    鸿蒙原生应用元服务开发-仓颉基本概念函数

    仓颉使用关键字func 表示函数定义的开始,func 之后依次是函数名、参数列表、可选的函数
    发表于 08-14 16:23

    快速掌握C语言关键字

    C语言中的32个关键字你知道多少个呢?根据关键字的作用分为四类:数据类型关键字、控制语句关键字、存储类型
    的头像 发表于 07-06 08:04 444次阅读
    快速掌握C<b class='flag-5'>语言</b><b class='flag-5'>关键字</b>

    inline关键字被优化导致此类函数被布局在flash内,怎么处理?

    问题解决。 但是,希望乐鑫官方把idf内源码中的inline关键词都替换为__attribute((always_inline)),因为inline关键字不可靠! 期待下次idf版本更新能解决此bug,自己修改idf源码真的是权宜之计、临时之策。
    发表于 06-21 12:03

    Go语言中的函数、方法与接口详解

    Go 没有类,不过可以为结构体类型定义方法。方法就是一类带特殊的接收者参数的函数。方法接收者在它自己的参数列表内,位于 func 关键字和方法名之间。(非结构体类型也可以定义方法)
    的头像 发表于 04-23 16:21 929次阅读

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

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

    PHP用户定义函数详细讲解

    描述 在所有编程和脚本语言中,函数是可以在程序中重复使用的语句块。在 PHP 中,函数的概念与另一种语言(如“C”)中的概念相同。标准 PHP 发行版中有 1,000 多个内置
    的头像 发表于 03-20 14:27 461次阅读

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

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

    C语言中的typedef的应用

    C 语言提供了 typedef 关键字,您可以使用它为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE。
    发表于 03-06 11:34 443次阅读
    C<b class='flag-5'>语言</b>中的typedef的应用

    verilog中function和task的区别

    非常相似,但它们在功能和使用方式上有一些重要的区别。 定义和声明方式不同: Function:使用关键字"function"定义和声明。函数
    的头像 发表于 02-22 15:40 2062次阅读

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

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