import functools
def spamrun(fun):
#@functools.wraps(fun)
def sayspam(*args,**kwargs):
print '2 => target1:%s,%s,%s'%(fun.__name__,args,kwargs)
ret = fun(*args)
print '4 =>'
return ret
return sayspam
def spamrun2(fun):
#@functools.wraps(fun)
def sayspam(*args,**kwargs):
print '1 => target2:%s,%s,%s'%(fun.__name__,args,kwargs)
ret = fun(*args)
print '5 => '
return ret
return sayspam
def simple(fun):
print u'执行simple 简单装饰' + fun.__name__
return fun
#@pack
#@simple
@spamrun2
@spamrun
def useful(*args,**kwargs):
print u'3 =>执行useful函数',args
#上面的包装器等同于下面的调用,结果一致
#useful = spamrun2(spamrun(useful))
useful(1,2,3)
输出
1 => target2:sayspam,(1, 2, 3),{}
2 => target1:useful,(1, 2, 3),{}
3 =>执行useful函数 (1, 2, 3)
4 =>
5 =>
</pre><pre code_snippet_id="599387" snippet_file_name="blog_20150206_3_7287509" name="code" class="python">