前言
- 协程对象是没有回调函数的
- 需封装其为task对象
- 回调函数默认只有一个参数,就是task对象
- 使用result方法可以获取返回值
默认参数
# -*- coding: utf-8 -*-
# @Author : zbz
import asyncio
def callback(task):
print("进入回调...")
print(task.result())
async def work():
print("开始下载...")
await asyncio.sleep(1)
print("下载完成...")
return "yes"
async def run():
task = asyncio.create_task(work())
await task
task.add_done_callback(callback)
if __name__ == '__main__':
asyncio.run(run())
运行结果
实现自定义参数
- 借助functools模块中的partial方法
import asyncio
from functools import partial
def callback(name, task):
print("{} 进入回调...".format(name))
print(task.result())
async def work():
print("开始下载...")
await asyncio.sleep(1)
print("下载完成...")
return "yes"
async def run():
task = asyncio.create_task(work())
await task
task.add_done_callback(partial(callback, "charo"))
if __name__ == '__main__':
asyncio.run(run())