• 带函数的装饰器、多个装饰器装饰一个函数


    一、带参数的装饰器;------开关

    __author__ = 'Administrator'
    F=True
    def outer(F):
        def wap(fun):#gg
            def inner(*args,**kwargs):
                if F:
                    print("inner   before")
                    ret=fun(*args,**kwargs)#gg()
                    print("inner   after")
                else:
                    ret=fun(*args,**kwargs)
                return  ret
            return inner
        return wap
    
    @outer(F) #先执行out(F) ----@wap----->gg=wap(gg)
    def gg():
        print("gg............")
    gg()#inner()

    二、多个装饰器装饰一个函数

    __author__ = 'Administrator'
    def yn(fun):#fun=sc_inner
        def yn_inner(*args,**kwargs):
            print("yun..........before")
            ret=fun(*args,**kwargs)#sc_inner()
            print("yn...........after")
            return ret
        return yn_inner
    
    def sx(fun):#fun=china
        def sx_inner(*args,**kwargs):
            print("sx..........before")
            ret=fun(*args,**kwargs)#china()
            print("sx...........after")
            return ret
        return sx_inner
    
    @yn #china=yn(china)-----china=yn(sx(china))----china=yn(sx_inner)---->china=yn_ineer
    @sx  #china=sx(china)----china=
    def china():
        print("china is good ")
    
    china()#yn_inner()

    三、装饰器的一个应用

    l = []
    def wrapper(func):
        l.append(func)  #统计当前程序中有多少个函数被装饰了
        def inner(*args,**kwargs):
            #l.append(func)  #统计本次程序执行有多少个带这个装饰器的函数被调用了
            ret = func(*args,**kwargs)
            return ret
        return inner
    
    @wrapper  #f1 = wrapper(f1)
    def f1():
        print('in f1')
    
    @wrapper #f2 = wrapper(f2)
    def f2():
        print('in f2')
    
    @wrapper #f2 = wrapper(f2)
    def f3():
        print('in f3')
    print(l)
  • 相关阅读:
    Linux中split大文件分割和cat合并文件
    linux 之oracle静默安装
    linux查看文件的编码格式的方法 set fileencoding
    cat file | while read line的问题
    LINUX增加SWAP分区---install_oracle
    分布式系统---负载均衡、同步
    oracle常用命令
    Oracle中三种循环(For、While、Loop)
    PRD产品需求文档
    App界面交互设计规范
  • 原文地址:https://www.cnblogs.com/ctztake/p/7257721.html
Copyright © 2020-2023  润新知