【Python】async与await用法
1.【Python】使用vscode编码提示找不到模块2.【Python】真值与假值3.【Python】迭代器与可迭代对象的区别与关系
4.【Python】async与await用法
5.【Python】异步迭代器与普通迭代器的区别6.【Python】静态方法与类方法的区别7.【Python】Formatter预定义的字段有哪些8.【Python】注解的使用9.【Python】包和模块的应用10.【Python】类的声明和使用11.【Python】函数参数12.【Python】省略号的用法13.【Python】如何判断变量类型14.【Python】十六进制、八进制、二进制的写法15.【Python】__pycache__文件夹16.【Python】枚举定义17.【Python】判断属性是否存在18.【Python】如何获取命令行参数19.【Python】__name__的用法async
用于修饰函数,将普通函数变为异步函数。
async def t2():
print(2)
直接调用异步函数不会返回结果,而是返回一个协程对象。
协程需要通过其他方式来驱动,如async.run
函数。
await
函数只能在异步函数中使用,可以通过该关键字,挂起当前协程,让另一个协程执行完毕,再次执行本协程。
import asyncio
async def t2():
print(2)
async def t1():
await t2()
print(1)
# execute the asyncio program
asyncio.run(t1())
输出:
2
1
async with
异步上下文管理器和普通的with
类似。async with
后跟随的对象必需实现__aenter__
和__aexit__
函数,异步上下文管理器必需在异步函数中使用。
语法如下:
async with EXPR as VAR:
BLOCK
在执行BLOCK
之前会先执行EXPR
的__aenter__
异步函数,然后将返回值赋值给VAR
,BLOCK
执行完毕后,会执行EXPR
的__aexit__
函数。
上述代码等同于以下代码:
mgr = (EXPR)
aexit = type(mgr).__aexit__
aenter = type(mgr).__aenter__(mgr)
exc = True
VAR = await aenter
try:
BLOCK
except:
if not await aexit(mgr, *sys.exc_info()):
raise
else:
await aexit(mgr, None, None, None)
async for
async for
和普通的for
类似,async for
用于遍历异步迭代器。异步迭代器需要实现__aiter__
和__anext__
函数。
语法如下:
async for TARGET in ITER:
BLOCK
else:
BLOCK2
TARGET
是调用了迭代器__anext__
函数的返回值。上述语法等同于以下代码:
iter = (ITER)
iter = type(iter).__aiter__(iter)
running = True
while running:
try:
TARGET = await type(iter).__anext__(iter)
except StopAsyncIteration:
running = False
else:
BLOCK
else:
BLOCK2
合集:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗