前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3学习之装饰器

python3学习之装饰器

作者头像
py3study
发布2020-01-03 10:52:13
3290
发布2020-01-03 10:52:13
举报
文章被收录于专栏:python3
代码语言:javascript
复制
#定义装饰器,outer参数是函数,返回也是函数
#作用:在函数执行前和执行后分别附加额外功能
def  outer(func):
    def  inner(*args, **kwargs):
        print("log")
        func(*args, **kwargs)
        print("Don't back")
        # return "r"
    return inner
@outer
def  f1(a):
    print(a,"F1")
@outer
def  f2(a,b):
    print("F2",a,b)
f1(123)
f2(123,456)


#带参数的装饰器,在outer外边又包装了一层
def oo(arg):
    print("hihihihi")    #此处的代码,在装饰器被调用时就被执行,不需要等被装饰的函数被调用
    def  outer(func):
        def  inner(*args, **kwargs):
            print(arg)
            print("log")
            func(*args, **kwargs)
            print("Don't back")
            print(arg)
            # return "r"
        return inner
    return outer
def  tt(func):
    def  inner(*args, **kwargs):
        # print(arg)
        print("aaaaa")
        func(*args, **kwargs)
        print("ttttt")
        # print(arg)
        # return "r"
    return inner
    
@tt
@oo(123333)   #可以多层装饰,规则是:从上到下执行装饰器
def  f1(a):
    print(a,"F1")

@oo(11111)
def  f2(a,b):
    print("F2",a,b)

#f1(123)
#f2(123,456)

结果:

hihihihi
hihihihi
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档