【文件属性】:
文件名称:内联回调函数-华为云大数据中台架构分享
文件大小:5.68MB
文件格式:PDF
更新时间:2021-06-11 11:13:57
Python cookbook 中文 参考
7.11 内联回调函数
问题
当你编写使用回调函数的代码的时候,担心很多小函数的扩张可能会弄乱程序
控制流。 你希望找到某个方法来让代码看上去更像是一个普通的执行序列。
解决方案
通过使用生成器和协程可以使得回调函数内联在某个函数中。 为了演示说明,
假设你有如下所示的一个执行某种计算任务然后调用一个回调函数的函数(参考
7.10 小节):
def apply_async(func, args, *, callback):
# Compute the result
result = func(*args)
# Invoke the callback with the result
callback(result)
接下来让我们看一下下面的代码,它包含了一个 Async 类和一个 inlined_async
装饰器:
from queue import Queue
from functools import wraps
class Async:
def __init__(self, func, args):
self.func = func
self.args = args
def inlined_async(func):
@wraps(func)
def wrapper(*args):