装饰器(装饰器带参数)

认证函数

def auth(request,kargs):
print("认证成功!")

日志函数

def log(request,kargs):
print("日志添加成功")

装饰器函数。接收两个参数,这两个参数应该是某个函数的名字(上边定义的)。

def Filter(auth_func,log_func):
# 第一层封装,f1函数实际上被传递给了main_fuc这个参数
def outer(main_func):
# 第二层封装,auth和log函数的参数值被传递到了这里,这个值是来自f1函数的参数
def wrapper(request,kargs):
# 下面代码的判断逻辑不重要,重要的是参数的引用和返回值
before_result = auth(request,kargs)
if(before_result != None):
return before_result;

        main_result = main_func(request,kargs)
        if(main_result != None):
            return main_result;

        after_result = log(request,kargs)
        if(after_result != None):
            return after_result;

    return wrapper
return outer

注意了,这里的装饰器函数有参数哦,它的意思是先执行filter函数

然后将filter函数的返回值作为装饰器函数的名字返回到这里,所以,

其实这里,Filter(auth,log) = outer , @Filter(auth,log) = @outer

@Filter(auth,log)
def f1(name,age):

print("%s 正在连接业务部门1数据接口......"%name)

调用方法

f1("jack",18)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 基础1.r''表示''内部的字符串默认不转义2.'''...'''表示多行内容3. 布尔值:True、False(...
    neo已经被使用阅读 5,748评论 0 5
  • 教程地址:python进阶 - 慕课网 python函数式编程 变量可以指向函数: f = absprint(f)...
    竹口小生阅读 3,730评论 0 2
  • 今日总结: 1,按时起床,8:30准时起床的(今天起床突然发现我有明显的小肚肚了,好可怕!) 2,坚持吃早餐,还是...
    121fefc349ba阅读 1,283评论 0 0
  • 我不戴眼镜,视力很好,无法理解戴眼镜的痛苦。 我妹妹和妹夫都戴眼镜,他们深知戴眼镜的痛苦和麻烦,因此特别注重保护自...
    李静_7285阅读 2,383评论 0 4
  • 前几天的某天下午,不小心把手机弄掉到水里了!因为几年前也掉过一次,所以处理起来还是有章可循的。迅速抓起手机,迅速关...
    红尘佛心阅读 3,437评论 1 2

友情链接更多精彩内容