一.基本
第一波 ####
def foo():print 'foo'foo #表示是函数
foo() #表示执行foo函数#### 第二波 ####
def foo():print 'foo'foo = lambda x: x + 1foo() # 执行下面的lambda表达式,而不再是原来的foo函数,因为函数 foo 被重新定义了
二.example
#一个参数
def w1(func): #func = f1def inner(arg): #arg是f1的参数print('auth %s'%arg) #新增加内容return func(arg) #运行老f1return 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 innerdef 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 wrapperreturn outer@Filter(Before, After)
def Index(request,kargs):print('index')Index('a','b')