• 手把手教你使用python复杂一点点的装饰器


    #只要@deco后面跟括号,都要 先传装饰器参数,返回 再传目标待装饰函数,返回 传目标函数的参数
    #这个参数可以是类
    def deco(arg):#装饰器的函数在这里传
        print('0',arg) 
        def _deco(func):#装饰函数在这里传 
            print('1',arg) 
            def __deco():#装饰函数的参数在这里传 
                print("所装饰函数 %s 调用前 [%s]." % (func.__name__, arg)) 
                func() 
                print(" 所装饰函数 %s 调用后 [%s]." % (func.__name__, arg)) 
                return 1 
            return __deco 
        return _deco 
    
    #@deco表示调用 deco, 
    #且每当调用接下来定义的函数 myfunc,则为调用 deco 返回的函数 func 
    
    #与前面不同的地方在于,这里 @deco后面跟了(),是调用状态, 
    #所以会直接传参、调用deco,并调用 函数deco返回的函数_deco 
    #且每当调用接下来定义的函数 myfunc,则为 
    # 调用 传装饰器参数的deco所返回的 传所装饰函数的_deco所返回的__deco 
    @deco("装饰器参数") 
    def myfunc(): 
        print(" 这一句出来了证明函数 myfunc 调用了") 
        return 'ok'#这里没用了,在deco中有用而已 
    
    ''' 
    这里0 1都打印出来了 
    ''' 
    
    @deco("装饰器参数er") 
    def myfunc2(): 
        print(" 这一句出来了证明函数 2 调用了") 
    
    myfunc() 
    print('
    ') a =myfunc2()#1 返回的是deco返回的1 
    ''' 
    装饰器呢,测试的时候,例如测试函数性能的时候经常用。
     写一些工具的时候,例如协服务程序的定时器的时候也经常用。 
    总之就有点类似 用在所写代码上的 一些工具 
    '''
    

      



    作者:头条号 / 趣味Python
    链接:http://toutiao.com/i6313766939822916098/
    来源:头条号(今日头条旗下创作平台)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    EMVTag系列15《选择应用响应数据》
    EMVTag系列14《支付环境响应数据》
    EMVTag系列13《脱机PIN》
    EMVTag系列9《卡片管理数据》
    EMVTag系列7《静态签名数据》
    EMVTag系列6《IAC 发卡行行为代码》
    EMVTag系列2《磁条等效数据》
    code1169 传纸条
    关于 变量越界
    code1039 数的划分
  • 原文地址:https://www.cnblogs.com/PythonChan/p/5730052.html
Copyright © 2020-2023  润新知