import asyncio
from functools import partial
import requests
uri = ''
print(id(uri))
async def request():
url = 'https://www.baidu.com'
status = requests.get(url)
# print(status)
return status
def callback(task):
'''为什么url为list类型时,不需要加global,而url为str时,要加global
因为list可变序列,l.append(1)时,没有得到一个新的对象,引用没变,而url为不可变序列,就地加增量赋值时,会创建一个新对象
在局部区域里用global修饰,表示为全局变量,外部可以访问
'''
global uri
uri = uri + 'sfsf'
return task.result()
coroutine = request()
task = asyncio.ensure_future(coroutine)
# task.add_done_callback调用callback函数名称时,task会自动传入一个task对象到callback函数中,且参数位置总在最后一位,就是如果callback有其他参数,必须放在task参数之前
if __name__ == '__main__':
loop = asyncio.get_event_loop()
task.add_done_callback(callback)
print('Task:', task)
loo
python协程之绑定回调函数
最新推荐文章于 2024-03-30 17:28:11 发布
本文探讨了Python协程中回调函数的使用。当url为list时,无需global修饰,因list是可变序列,操作不创建新对象;而url为str时,由于不可变序列的赋值会产生新对象,需用global。通过task.add_done_callback可以将任务对象传递给回调函数,即使回调函数已有其他参数,task也需置于参数列表最后。
摘要由CSDN通过智能技术生成