|
Python 回调
在Python中,‘回调函数’ (callback) 是指一个作为参数传递给其它代码的函数。
目的是在后者完成某些操作后调用这个传递进来的函数。
回调允许在执行异步操作或处理事件时通知调用者代码。
回调函数通常用于:
- 异步操作:在网络请求或文件 I/O 操作完成时调用回调来处理结果
- 事件监听:在 GUI 编程中,回调用于响应用户交互,如按钮点击
- 定时任务:定时器可以在指定的时间后执行回调函数
例子如下,假设你有一个下载文件的函数,你希望在下载完成后自动执行某些操作,你可以写一个回调函数来实现这个目标:
def download_file(url, callback):# 模拟文件下载过程print(f"开始下载 {url}...")# 假设文件下载了一段时间print(f"{url} 下载完成!")# 下载完成后,调用回调函数callback(url)def process_file(url):print(f"处理文件: {url}")# 调用 download_file 函数,并传递 process_file 函数作为回调
download_file('http://example.com/somefile', process_file)
在这个例子中,download_file
函数接受一个URL和一个回调函数callback
。当文件下载完成后,download_file
会调用callback
函数,而这里的callback
函数就是我们传递的process_file
函数,用于处理下载完成的文件。
这样的设计模式使得代码更加灵活和可重用,因为download_file
函数不需要知道下载完成后需要进行什么具体操作,它只负责下载文件并在合适的时机调用回调函数。而具体的操作逻辑则定义在回调函数中,可以根据需要灵活地更改。
PS:
-
同步操作:同步操作是指代码的执行必须按照特定顺序逐行进行。在同步I/O操作中,程序在发起一个I/O操作后,必须等待该操作完成才能继续执行后续代码。这意味着程序会在等待I/O操作的过程中阻塞,即不做任何事情。 例如,当你从硬盘读取文件时,程序将停在那里,直到文件读取完成。在这期间,CPU不能做其他任务,这可能导致资源利用不充分,尤其是当I/O操作耗时较长时。
-
异步操作:异步操作允许程序在等待一个操作完成的同时继续执行其他任务。这通常通过事件循环和回调、Promise(在JavaScript中)或 Future 和 async/await(在Python 3.5+中)这样的构造来实现。
|
|