请求解析装饰器工厂(Decorator Factory)的功能与实现示例
实现装饰器工厂
decorator_apply 需求
- 装饰器工厂接收一个仅支持单个位置参数的函数(如示例中的lambda表达式)作为输入
- 返回的装饰器会先执行被装饰函数,获取其返回值,再将该返回值传入工厂接收的函数中,最终返回这个函数的执行结果
示例代码
@decorator_apply(lambda user_id: user_id + 1) def return_user_id(num: int): return num return_user_id(42) # 输出: 43
实现方案
def decorator_apply(func): def decorator(wrapped_func): def wrapper(*args, **kwargs): # 执行被装饰函数,拿到返回值 result = wrapped_func(*args, **kwargs) # 用工厂传入的函数处理返回值并返回 return func(result) return wrapper return decorator
代码说明
decorator_apply作为装饰器工厂,参数func是用来处理被装饰函数返回值的逻辑函数- 内层的
decorator是实际的装饰器,接收被装饰的函数wrapped_func wrapper函数负责调用被装饰函数,将其返回值传入func处理后返回最终结果
内容的提问来源于stack exchange,提问作者Yuliya Yeusiyevich
相关产品推荐
相关产品推荐

