Python多重装饰器理解

2017-02-03  本文已影响127人  糊君

举例说明:

#outer1
def outer1(func):
    def inner(*args,**kwargs):
        print("认证成功!")
        result = func(*args,**kwargs)
        print("日志添加成功")
        return result
    return inner

#outer2
def outer2(func):
    def inner(*args,**kwargs):
        print("一条欢迎信息。。。")
        result = func(*args,**kwargs)
        print("一条欢送信息。。。")
        return result
    return inner

@outer1

@outer2

#f1
def f1(name,age):
    print("%s 正在连接业务部门1数据接口......"%name)

# 调用方法
f1("jack",18)

执行结果:

认证成功!
一条欢迎信息。。。
jack 正在连接业务部门1数据接口......
一条欢送信息。。。
日志添加成功

解析:
实际上装饰后的效果等价于f1 = outer1(outer2(f1)),关于装饰器的具体解释可以参考这位大神的文章,本文的例子也是从中引用的。

上一篇下一篇

猜你喜欢

热点阅读