#! /usr/bin/env python
#coding=utf-8
def deco(arg):#接收一个参数的装饰器
def _deco(fun):#装饰原函数,类似于java动态代理
print arg#对参数进行处理
def __deco(*args, **kwargs):
print 'before'#前期处理
ret = fun(*args, **kwargs)#调用原函数存储返回值,此处应注意,输入的参数里仍带有**
print 'after'#后期处理
return ret#返回值
return __deco
return _deco
#测试实例
@deco('test')#等价域deco('test')(fun)
def fun(a, b):
print 'a + b:',a + b
return (a + b)
def fun3(a, b, c):
print 'a + b + c:',a + b + c
return (a + b + c)
fun(1,3)
fun3(1,2,3)