less than 1 minute read

Python装饰器实现认证逻辑

装饰器介绍

Python装饰器是一种高级特性,用于在不修改原有代码结构钢的情况下,动态地修改或增强函数的行为。装饰器本质是一种能够接受函数作为输入,并返回一个新函数的高阶函数。

应用场景

  1. 日志记录
  2. 权限验证
  3. 缓存
  4. 事务管理
  5. 性能监控

示例

示例展示

以下使用认证逻辑,对装饰器进行说明

# 装饰器
def auth(func):
    def wrapper(*args, **kwargs):
        # 上传逻辑前进行认证
        before_call_code()

        result = func(*args, **kwargs)

        after_call_code()

        return result
    return wrapper

@auth
def upload_func(arg1, arg2):
    # 上传函数实现
    pass

upload_func(arg1, arg2)

示例解析

  1. auth是一个装饰器函数,接受函数func作为入参,并返回一个内部函数wrapper,也就是在func外部嵌套了一个wrapper方法,在wrapper方法中可以进行一些func之外操作,之后调用func函数,并将结果返回;
  2. 使用@auth作为前缀,放到upload_func定义前,作为装饰器使用;
  3. 在调用update_fun(arg1, arg2)时,Python会自动将upload_fun函数作为入参传入auth中,然后返回wrapper函数替换掉upload_fun方法。(也即将update_fun(arg1, arg2)替换为wrappern(arg1, arg2)执行)

Updated:

Leave a comment