stcaac 发表于 2018-8-14 12:02:51

python3学习之装饰器

#定义装饰器,outer参数是函数,返回也是函数  
#作用:在函数执行前和执行后分别附加额外功能
  
defouter(func):
  
    definner(*args, **kwargs):
  
      print("log")
  
      func(*args, **kwargs)
  
      print("Don't back")
  
      # return "r"
  
    return inner
  
@outer
  
deff1(a):
  
    print(a,"F1")
  
@outer
  
deff2(a,b):
  
    print("F2",a,b)
  
f1(123)
  
f2(123,456)
  

  

  
#带参数的装饰器,在outer外边又包装了一层
  
def oo(arg):
  
    print("hihihihi")    #此处的代码,在装饰器被调用时就被执行,不需要等被装饰的函数被调用
  
    defouter(func):
  
      definner(*args, **kwargs):
  
            print(arg)
  
            print("log")
  
            func(*args, **kwargs)
  
            print("Don't back")
  
            print(arg)
  
            # return "r"
  
      return inner
  
    return outer
  
deftt(func):
  
    definner(*args, **kwargs):
  
      # print(arg)
  
      print("aaaaa")
  
      func(*args, **kwargs)
  
      print("ttttt")
  
      # print(arg)
  
      # return "r"
  
    return inner
  

  
@tt
  
@oo(123333)   #可以多层装饰,规则是:从上到下执行装饰器
  
deff1(a):
  
    print(a,"F1")
  

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

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

  
结果:
  

  
hihihihi
  
hihihihi
页: [1]
查看完整版本: python3学习之装饰器