python3-day4(装饰器)
一.基本
第一波 #### def foo(): print 'foo' foo #表示是函数 foo() #表示执行foo函数 #### 第二波 #### def foo(): print 'foo' foo = lambda x: x + 1 foo() # 执行下面的lambda表达式,而不再是原来的foo函数,因为函数 foo 被重新定义了
二.example
#一个参数 def w1(func): #func = f1 def inner(arg): #arg是f1的参数 print('auth %s'%arg) #新增加内容 return func(arg) #运行老f1 return inner #返回inner给新的f1 @w1 def f1(arg): print('f1 %s'%arg) f1('alex') #运行新的F1了 #二个参数 def w2(func): def inner(arg1,arg2): print("auth %s,%s"%(arg1,arg2)) return func(arg1,arg2) return inner @w2 def f2(arg1,arg2): print("f2 %s,%s"%(arg1,arg2)) f2('tom','boy') #N个参数 def w3(func): def inner(*args,**kwargs): print('auth') return func(*args,**kwargs) return inner @w3 def f3(arg1,arg2,arg3): print("f3 %s,%s,%s"%(arg1,arg2,arg3)) f3('tom','is','boy') #一个函数被多个装饰器装饰 def w1(func): def inner(*args,**kwargs): print('w1') return func(*args,**kwargs) return inner def w2(func): def inner(*args,**kwargs): print('w2') return func(*args,**kwargs) return inner @w1 @w2 def f3(arg1,arg2,arg3): print("f3 %s,%s,%s"%(arg1,arg2,arg3)) f3('tom','is','boy') #通用装饰器 def Before(request,kargs): print('before') def After(request,kargs): print('after') def Filter(before_func,after_func): def outer(main_func): def wrapper(request,kargs): before_result = before_func(request,kargs) main_result = main_func(request,kargs) after_result = after_func(request,kargs) return wrapper return outer @Filter(Before, After) def Index(request,kargs): print('index') Index('a','b')