Python decorator学习
时间:2010-03-12 来源:pgt112you
使用decorator主要是为了在函数调用前和函数调用之后做一些处理。 decorator在定义被他修饰的函数的时候就会运行,而不是在调用被他修饰的函数的时候才会运行。如果是嵌套的decorator或者是带参数的decorator,他会一直运行,知道返回的函数式最后一层函数为止。
没有参数的decorator的调用顺序为: @A @B @C def f (): 最终python会处理为: f = A(B(C(f))) 没有参数的decorator例子:
#coding:utf-8
#在此时cloth将会运行,他的func这个参数是test1这个函数。然后cloth将new_func返回去。 |
带有参数的decorator的调用顺序为: @A(args) def f (): python会处理为: def f(): … _deco = A(args) f = _deco(f) 带有参数的decorator的例子为:
def dress(param): #这里的param是@dress(10)中的10
#此时dress将会运行,因为@dress(10)有参数,所以传给dress的参数param是10。在dress中,做了一些处理之后将new_dec返回,这个new_dec是一个新的decorator。因为10这个参数是传给dress的,所以传给new_dec的参数是函数test2。然后new_dec再将new_func返回。 |